Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха. |
20.11.2017, 21:41
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
А еще эта строка в цикле прерывания с периодом в 1 мс будет отсчитывать "1 раз 100 секунд" только если оператор выставит уставку периода регулирования EE_PID_TIME в значение "100". Но на случай такого глупого оператора программа не даст ему это сделать, ибо период регулирования, исходя из характеристик оборудования (конкретно - определяемой объемом бака и мощностью нагреватля скорости нагрева) можно задать от 1 до 10 сек. Соответственно и значение дданной переменной EE_PID_TIME лежит в этом диапазоне.
|
Ну если EE_PID_TIME лежит в диапазоне от 1 до 10 сек, то чего же ты ее умножаешь на 1000?
|
|
|
|
20.11.2017, 21:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Ну если EE_PID_TIME лежит в диапазоне от 1 до 10 сек, то чего же ты ее умножаешь на 1000?
|
Чтобы получить значение в миллисекундах. От 1000 до 10000 миллисекунд. Потому что это значение будет использовано в участке кода, выполняющегося раз в 1 миллисекунду, для того, чтобы определенная часть этого участка - расчет нового значения управляющего сигнала ПИД - выполнялась с заданным в секундах в EE_PID_TIME периодом. А остальные участки продолжали выполняться один раз в миллисекунду, как требуется для их работы.
Последний раз редактировалось AR_Favorit; 20.11.2017 в 21:54.
|
|
|
|
20.11.2017, 21:57
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Чтобы получить значение в миллисекундах.
|
То есть ты EE_PID_TIME , которая, по твоим словам, лежит в диапазоне от 1 до 10 сек, умножаешь на 1000, чтобы получить значение в миллисекундах?
Мне всегда казалось когда секунды умножают на 1000, то получают КИЛОсекунды!
|
|
|
|
20.11.2017, 22:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
То есть ты EE_PID_TIME , которая, по твоим словам, лежит в диапазоне от 1 до 10 сек, умножаешь на 1000, чтобы получить значение в миллисекундах?
Мне всегда казалось когда секунды умножают на 1000, то получают КИЛОсекунды!
|
Вообще-то "кило" получают как раз когда делят значение на 1000.
1000 грамм = 1 килограмм.
1000 метров = 1 километр
1 грамм = 1000 миллиграмм.
1 метр = 1000 миллиметров.
1000 миллисекунд = 1 секунда.
Или нет? Я в свою очередь всю жизнь был уверен, что 1000 миллисекунд - это одна секунда. Кто-то из нас прожил жизнь неправильно?
Задача для первого класса. В 1 секунде 1000 миллисекунд. Как узнать, сколько миллисекунд в 3 секундах?
ЗЫ
Сообщение от AR_Favorit
|
Это снова будет весело
|
Сообщение от laser532
|
зачем Вам эта клоунада?
|
Ты пытаешься доказать, что код (весьма примитивный, и совершенно точно уже работающий в устройстве) - работать не может? Или пытаешься разобраться, как он работает, несмотря на твою уверенность, что он не работает (ну в смысле не реализует PID-регулирование температуры)? Я бы порекомендовал второе.
Последний раз редактировалось AR_Favorit; 20.11.2017 в 22:12.
|
|
|
|
20.11.2017, 22:10
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Я в свою очередь свю жизнь был уверен, что 1000 миллисекунд - это одна секунда.
|
Правильно! А вот когда 1 или 10 секунд умножают на 1000, то получают 1000 или 10 000 секунд! Что можно вполне справедливо написать 1 или 10 КИЛОсекунд, чтобы постоянно не писать три дополнительных нуля!
|
|
|
|
20.11.2017, 22:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Правильно! А вот когда 1 или 10 секунд умножают на 1000, то получают 1000 или 10 000 секунд! Что можно вполне справедливо написать 1 или 10 КИЛОсекунд, чтобы постоянно не писать три дополнительных нуля!
|
Ты путаешь пересчет величины из одной единицы измерения в другую (что происходит в рассматриваемой строке) - с присвоением величине другого значения с последующим таким же пересчетом в другую единицу измерения.
Поступим проще.
1) сколько миллисекунд в трех секундах?
2) как ты это посчитал?
Последний раз редактировалось AR_Favorit; 20.11.2017 в 22:35.
|
|
|
|
20.11.2017, 22:42
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Ты пытаешься доказать, что код (весьма примитивный, и совершенно точно уже работающий в устройстве) - работать не может?
|
Я хочу понять ЗАЧЕМ ты, в первой строке своего кода, умножаешь введенную оператором константу EE_PID_TIME на 1000, и если она у тебя лежит в диапазоне от 1 до 10 секунд? Неужели нельзя сразу ввести цифру от 1000 до 10 000, обозначающее миллисекунды, и не напрягать ни свой код программы, ни сам контроллер лишними операциями умножения?
У тебя же значение EE_PID_TIME имеет 16 разрядов, и в них спокойно влезет любое знаковое число в диапазоне от -32 768 до 32 767, или беззнаковое в диапазоне от 0 до 65535!
|
|
|
|
20.11.2017, 23:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Я хочу понять ЗАЧЕМ ты, в первой строке своего кода, умножаешь введенную оператором константу EE_PID_TIME на 1000, и если она у тебя лежит в диапазоне от 1 до 10 секунд? Неужели нельзя сразу ввести цифру от 1000 до 10 000, обозначающее миллисекунды, и не напрягать ни свой код программы, ни сам контроллер лишними операциями умножения?
У тебя же значение EE_PID_TIME имеет 16 разрядов, и в них спокойно влезет любое знаковое число в диапазоне от -32 768 до 32 767, или беззнаковое в диапазоне от 0 до 65535!
|
Исторически так сложилось. Изначально планировалось жестко задать период регулирования, и на месте EE_PID_TIME был токен CONST_PID_TIME, определенный как
Код:
|
#define CONST_PID_TIME 1 //период регулирования в секундах |
для того, чтобы подобрать его при отладке под параметры установки заказчика.
И умножение никак не напрягало ни контроллер, так как выполнялось на этапе компиляции, и в машинном коде умножения не было, а было уже посчитанное число в миллисекундах, ни тем более код программы, где с этим умножением - наглядней (для меня - а больше в исходники прошивки устройства никто и не должен смотреть).
Когда в процессе уточнения требований заказчика выяснилось, что параметры подогревамых баков для топлива могут отличаться на порядок - было решено сделать эту уставку изменяемой оператором, настраивающим установку. И CONST_PID_TIME превратилось в EE_PID_TIME. А данный участок кода остался неизменным, так как вычисление этих умножений всё равно производится за один такт процессора, и жертвовать наглядностью ради экономии наносекунд, когда процессор большую часть времени всё равно проводит в бездействии, не имело смысла. Если бы накладные расходы на эту наглядность были выше - как, например, высоки они у ардуино на базе атмеги на оперирование числами с плавающей точкой - я бы, разумеется, пожертвовал ей.
Так что этим вопросом не парься. Просто некоторая неоптимальность кода, да. То, что ты пытаешься разобрать - работа алгоритма PID - от нее не зависит никак.
Последний раз редактировалось AR_Favorit; 20.11.2017 в 23:06.
|
|
|
|
20.11.2017, 23:25
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
И умножение никак не напрягало ни контроллер, так как выполнялось на этапе компиляции, и в машинном коде умножения не было, а было уже посчитанное число в миллисекундах, ни тем более код программы, где с этим умножением - наглядней (для меня - а больше в исходники прошивки устройства никто и не должен смотреть).
|
Так это больше не контроллер напрягает (ведь ты контроллеры всегда выбираешь с запасом), это напрягает нагреваемый бачок с маслом, и твоего заказчика!
Бачок думает, что его контролируют максимум каждые 10 секунд, а оказывается о нем забывают не меньше чем на 100 секунд!
Твоего заказчика напрягает то что его бачок с маслом нагревается очень капризно, и ему приходится нанимать крутого оператора, за приличные деньги, чтобы он один раз нажал на кнопку пуск, и охранял настройки пида, которые вы ему оставляете после ваших перенастроек.
|
|
|
|
20.11.2017, 23:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Так это больше не контроллер напрягает (ведь ты контроллеры всегда выбираешь с запасом), это напрягает нагреваемый бачок с маслом, и твоего заказчика!
|
Сильно ошибаешься.
Сообщение от ALEGYR
|
Бачок думает, что его контролируют максимум каждые 10 секунд, а оказывается о нем забывают не меньше чем на 100 секунд!
|
Это снова выдумка. Я дважды уже тебе написал, что уставка EE_PID_TIME не может быть больше 10 секунд. Откуда ты берешь 100 секунд-то? Пальцем покажи.
Сообщение от ALEGYR
|
Твоего заказчика напрягает то что его бачок с маслом нагревается очень капризно, и ему приходится нанимать крутого оператора, за приличные деньги, чтобы он один раз нажал на кнопку пуск, и охранял настройки пида, которые вы ему оставляете после ваших перенастроек.
|
Не бредь, пожалуйста, иначе мы просто вернемся к старой манере "ведения дискуссии". Свои странные предположения оставь при себе, и не путай мои работающие конструкции со своими воображаемыми. Есть код, говори о нем.
Последний раз редактировалось AR_Favorit; 20.11.2017 в 23:33.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:02.
|
|