Перейти к содержанию
    

shasik

Свой
  • Постов

    317
  • Зарегистрирован

  • Посещение

Весь контент shasik


  1. Белый дед Терморегулятор - это лишь малая часть установки. Нагрев по определенному закону - это не самоцель.
  2. Мне нужен реализовать закон изменения температуры в печи, а не выдержать точно абсолютную температуру. Т.е. мне все равно 10 или 300 градусов намерил датчик, главное для меня, чтобы за время dt прирост температуры составил dT. Термопара встроена в стенку печи, что должно обеспечить хороший теплообмен. Советская медная чушка в жидкостном термостате значительно снижает неравномерность температуры, иногда на порядок. Будем считать, что и здесь не станут экономить на металле.
  3. Какой реактор? Да это же шутка была. Хватит уже издеваться. Вот стоило человеку один раз ошибиться, и теперь каждый считает своим долгом пнуть его за это. Охлаждения принудительного нет и не будет. В этом заказчик убежден.
  4. Вай-вай! Зачем ругаемся? Ашыпся я. В таких случаях обычно пишут про пятницу и конец рабочей недели, но тут я просто затупил. Вот сейчас специально посмотрел. Размеры 120х120х120 мм - это внешние габариты. Внутренний объем - неизвестно, да и не так принципиально это. Вес - неизвестен, т.е. сколько влезет. Могут положить 1 г, а могут и 1 кг (как я и говорил). Это я к тому вел, что моделька по ходу должна быть адаптивной или самонастраивающейся. Согласитесь, что при нагреве с указанной точностью в 0,5 градуса/мин 1 мг и 1 кг параметры будут разные. Для 1 мг - все определяется самой печкой. В случае если весь активный объем заполнен веществом, то прежде всего временные параметры изменяются. Это как мне видится. Что делать? ЗЫЖ Там еще крышка есть. Могут и не закрыть. Параметры теплообмена со средой тоже уйдут.
  5. Размеры в мм. Наши механики вбили мне это в голову навсегда. Поэтому и не указал. Посчитал это как само собой разумеющееся. А зачем мне знать материал изоляции и прочее? Принцип "черного ящика" не сработает? Подать максимальную (или максимально допустимую мощность), снять переходную характеристику, и по ней оценить инерционность. А за счет чего эта инерционность получена мне не интересно. Для меня главное знать зависимость напряжение-температура. Как сказал другой оратор: Еще параметры: Окружающая среда 25+/- 10 градусов Максимальная загрузка - 1 кг. Минимальная загрузка - определяется лишь конечной точностью измерения В идеале чем меньше, тем лучше. Ну, это естественно. Прыгать выше головы мы не собираемся. Переходная характеристика даст нам максимально возможную скорость нагрева. Будет печь, этот параметр тогда и уточним. Озвученные ранее 60 градусов/мин - это их желания, но не наша забота. Если печь обеспечить этого не сможет, то виновата в этом конструкция печи, а не наша электроника. Пусть переделывают (ставят более мощный нагреватель) или меняют ТЗ. Жаль. Я уж было обрадовался. Правильный выбор параметров ПИД'а не позволит нам избежать перегрева? Т.е. не удастся ли при правильном выборе постоянных времени всегда немного недогревать :)? Или как ввести предсказание? Или не получиться ли отстраиваться от возможного перегрева? Ведь измерять температуры в печи и соответственно контролировать мощность нагревателя мы можем с гораздо большей точностью, чем требуется обеспечить. Для максимальных 450 градусов +/-1% даст нам 9 градусов запаса (в сумме) и 4,5 градуса допуск на недогрев. Кроме того и сам процесс нагрева достаточно медленный. Максимальная скорость нагрева - 1 градус/с . Даже если мерить температуру 10 раз в секунду у нас будет возможность 10 раз предугадать перегрев. Другое дело, как это сделать.
  6. Печь параметры пока неизвестны. Есть габариты. Только нагреватель. Управление охлаждением (кондиционер или вентилятор не предусмотрены). Параметры: диапазон: 25-450 градусов. Отклонение от заданного закона изменения температуры: +/- 1%. Чувствительный элемент: термопара (тип пока неизвестен. ТП встроены в печь, т.к. печь еще делают, то и тип ТП пока неизвестен) Что еще нужно у них уточнить?
  7. Скорость нагрева: 0,5-60 градус/мин. Сама печь пока не доступна (ее еще делают), а соответственно ее инерционность пока неизвестна. Так на в скидку: справится ПИД с 1 градус/с? Размеры печи я уже приводил. Может сможете примерно (на основе личного опыта) оценить инерционность. Уже скачал. Пошел читать.
  8. Исходные данные: есть готовая печь небольших размеров (активная зона - 10х10х10). Планируется использовать ее в какой-то лаборатории для моделирования чего-то там. Задача: необходимо реализовать различные законы изменения температуры печи. Закон изменения температуры выбирается программно. Пока просят: простое поддержание заданной тепературы, линейное нарастание, квадратичное и корнеизвлеченное + кусочно-линейное. Вопрос: КАК? Я не прошу схему или программу, я прошу дать мне ссылочку или просто название книги, где можно про это почитать. Я такими вещами не занимался в принципе, поэтому теряюсь. Если бы нужно было просто нагреть до нужно температуры и держать ее постоянной, то тут все ясно: ПИД или вариации на эту тему. Но как, например, обеспечить линейное ее нарастание с нелинейность в 1-2%? При этом необходимо учитывать, что масса материала в печи неизвестна, там может быть как 1 г, так и 1 кг + инерционность самого процесса нагрева + еще какие-нибудь неведомые мне подводные камни. Как получить (измерить, рассчитать) математическую модель печи? Как мне видится, имея на руках мат. модель рассчитать необходимое воздействие для получения желаемого закона изменения температуры дело простое. Какой метод управления мощностью нагрева спирали использовать? В общем, вопросов много, опыта в этой области нет, а знания лишь поверхностные. Уважаемый All, прошу тебя, укажи мне направление, в котором необходимо двигаться.
  9. А еще частотная и импульсная (а соответственно и переходная) характеристики связаны между собой преобразованием Фурье. Зная одно (Вы это утверждаете), Вы автоматически знаете и другое.
  10. Специально почитал соответствующий раздел Рабинера/Голда. Алгоритм №1: БПФ столбцов+умножение на поворачивающие множители+БПФ строк - это работает. Об этом Вы уже писали. Чтобы работал Алгоритм №2: БПФ строк+умножение на поворачивающие множители+БПФ столбцов - необходима другая сортировка массива. Если для Алгоритма №1 данные записываются в массив по строкам, т.е. в Вашем примере х0 х1 х2 х3 то для Алгоритма №2 необходимо записывать по столбцам: х0 х2 х1 х3 Ответ почему теперь будет работать, очевиден, и, думаю, не требует доказательств
  11. Исходники вашей телеги к БПФ в студию. Т.к. написали Вы уже много, но с увеличением количества букв смысл все дальше и дальше. Лично я сначала алгоритмы проверяю в Matlabe, а затем уже пихаю в MC. Так вот, не считая погрешности вычисления, то ДПФ=БПФ(строки-столбцы)=БПФ(столбцы-строки). Значит, дело явно не в бобине. Или я не понимаю, о чем Вы говорите. :(
  12. Это почему еще? X*W1*W2=(X*W1)*W2=(X*W2)*W1 - знаете такое?
  13. Беда в том, что включение СИДа у Вас происходит в любом случае, независимо от того почему закончился цикл - то ли кнопку отпустили, то ли время уже прошло. Вам не хватает if для проверки причины завершения цикла.
  14. Про качество книги я не рассуждал. На заборах тоже иногда правду пишут, только нужно "правильно" читать. Книги у меня на домашнем компе, смогу выложить только в понедельник. Сами можете поискать работы Лосева, Мальцева и Богуша, Абламейко и др. ЗЫЖ Из книг можно еще вспомнить достаточно толковую "Поиск и декодирование сложных дискретных сигналов" (Лосев Бродская Коржик 1988) ЗЗЫЖ А можем и поэкспериментировать: Вы мне бинарную матрицу, а я Вам - ее факторизацию.
  15. Скажу честно, я не понял о чем Вы. Я говорил, про декодирование, а при чем здесь сортировка массивов я не знаю. На заборе тоже пишут. Еще раз. Если свести декодирование по методу МП к умножению принятой реализации на сигнальную матрицу и нахождению максимума, то сложность такого метода для бинарных сигналов N*log2(N), где N - длина сигнала. Быстрый алгоритм умножения вектора на матрицу основан на факторизации сигнальной матрице, а факторизовать можно любую бинарную матрицу без всяких условий на вид сигнала (функции Уолша, m-последовательность, КВ-коды и т.п.)
  16. Здесь слишком много букв, все прочитать не осилил. Зацепила это фраза: Уже лет надцать как есть алгоритмы быстрого декодирования по методу максимального правдоподобия любых бинарных сигналов. Поэтому сложность будет расти не по exp, а N*log2(N).
  17. Вот такое нагуглил (какой там год не знаю) http://www.rapidsharedata.com/go/61980318/...ndrea.djvu.html
  18. Ну, вообще то задача определена - получить белый и розовый шум. Из этого и исходим. Ваше предложение пропустить белый шум через формирующий фильтр - это, на мой взгляд, абсолютно правильный подход. Т.е. я не отвергаю, я просто уточнил, что квадрат АЧХ фильтра для получения "розового" шума должен иметь спад в 3дБ.
  19. Простой интегрирующий фильтр (та же простая RC-цепочка) даст спад в 6 дБ, т.е. Вы получите из "белого" шума "красный", а не "розовый".
  20. А вдруг у автора топика сигнал полностью реальный (нет комплексной части), тогда можно предложить пару-тройку десятков еще более быстрых алгоритмов. И т.д., и т.п. Все это пустое. Убежден, что автор топика - студент, который получил задание и решил, что он самый хитрый. Вас не настораживают его посты: На мой взгляд все ясно. Пока мы здесь напрягаемся, студент уже давно где-нибудь на форуме программистов: ищет исходники для Delphi. Здесь же ему не помогли. ЗЫЖ Извини, студент, если обидел.
  21. Эх, да простят меня модераторы ибо уже раз в четвертый рекламирую этот источник: Алгоритмы для программеров Там есть куча алгоритмов, в том числе и FFT4. Ищите там книгу (она есть в нескольких форматах, лично я скачивал pdf) и архив с исходниками к книге. Ну, а если не найдете то вот оно здесь: Algorithms_for_Programmers.rar sources.rar ЗЫЖ Можно было бы, конечно, вырезать только нужно, но вдруг вас что-нибудь еще заинтересует, поэтому полностью.
  22. Небольшое замечание ('SysRq' мне друг, но истина дороже): работает только с числами меньше 100. Для работы "больше 100", нужно еще пару строк (и т.д. для 1000, 10000, ...). Более общий подход для таких дел: использовать BCD. IMHO.
  23. 1. infanata.org 2. В строке поиска набрать "плоский живот" 3. скачать книги из полученного списка (много книг) 4. прочитать 5. И чо?
  24. На днях читал один топик и долго не мог понять, что присходит, никак не улавливалась причинно-следственная связь некоторых постов, после надцатой страницы прочитал сообщение модератора, что топик был разбит на две отдельные темы, поэтому часть сообщений была просто перенесена. Как-то не очень красиво получилось... Может сделать как на torrent'e: если идет явный оффтопик, то модератор просто скрывает текст сообщения под словом оффтопик, но само собщение не удаляется. Если страждущий хочет, не смотря на предупреждение, ознакомиться с содержимым, то достаточно кликнуть на "+"
  25. Оптимизация switch?

    Небольшая модификация предложенного Dog Pawlowa. Исходная ситуация: код команды - 1 байт, всего используемых команд около - 40. Решение: массив указателей на функции-обработчики для каждой возможной команды (длина массива 256). Для "нереализованных" команд просто вызывается функция-заглушка. Т.е. то, что предложил Dog Pawlowa Наш Всевышний и Генеральный решил, что отныне код команды будет 2 байта, при этом, естественно, не все команды будут реализованы. Прикинул я сколько займет теперь массив указателей, и понял что "это ж весь мой рост", в смысле память. Теперь делаю так: index = binary_search(state, StateArr); FunctionArr[index](); Массив StateArr, естественно, отсортирован (у меня по возрастанию). Когда юзвер добавляет очередную команду, то добаляем в массив StateArr очередной "идентификатор команды", а в FunctionArr адрес обработчика этой команды. После чего сортируем массив StateArr, при этом синхронно тасуется и массив FunctionArr. Процедура добавления новой команды некритична ко времени. На данный момент максимально возможное количество команд пользователя 2048. Проверяли худший случай, работает шустро. Замечание: когда команд немного (10-20), то быстрее оказался простой линейный просмотр массива StateArr, чем binary_search.
×
×
  • Создать...