Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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

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

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

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

Сообщение от Yuri222 Посмотреть сообщение
Надо бы создать математическую модель той системы бачок-нагреватель-датчик, измерить все постоянные времени (с учетом возможного напряжения питания нагревателя и зависимости потерь тепла от температуры), посчитать коэффициенты ПИД регулятора, чтобы получить нужное качество регулирования...
Я надеюсь, что AR_Favorit, именно так и поступил, прежде чем стал писать свой код. Но скорее всего, все это ему указали в ТЗ.
ALEGYR вне форума  
Непрочитано 20.11.2017, 21:15  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 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.RU
 
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 7,859
Сказал спасибо: 2,730
Сказали Спасибо 2,674 раз(а) в 1,978 сообщении(ях)
Yuri222 на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

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

Сообщение от Yuri222 Посмотреть сообщение
Но не удивлюсь, если было и наоборот - пришли, сказали, что нужно, а дальше - вплоть до выбора датчиков и мощности нагревателя - пришлось выбирать исполнителю этого задания.
Там было всё гораздо забавнее. Но к обсуждаемому вопросу отношения не имеет. Скажу только, что изначально вообще не шло речи о ПИДе и вообще управлении нагревателем.)))
AR_Favorit вне форума  
Непрочитано 20.11.2017, 21:34  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 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.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 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, время: 21:11.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot