Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Перемменные (Типы переменных)
Перемменные
mikhail09p Дата: Чт, 10.03.2011, 16:32  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Вот такие чудеса меня вынудили создать новую тему.
Есть программа терморегулятора,которая, кстати отлично работает, НО! Вчера увидел одну интересную вещь: девайс отказывается включать нагреватель, если температура ниже 17,7 градусов!
Короче - формула Out = (100 * Erore) + K Посмотрите в протеусе, как меняется Out , хотя она Word - от 32000 до минус 32000 ! Но ведь Переменные типа Word могут принимать значения в пределах от 0 до 65535
http://terrarus.ucoz.ru/proton_plus_ide/proton/comands/dim/dim.html
Анатолий ошибается в описании Протона?
Меняю на DWord - вообще пурга. Что, разные переменные нельзя умножать?..
Прикрепления: Thermo628.rar (318.5 Kb)
ЯНДЕКС Дата: 10.03.2011
retas Дата: Чт, 10.03.2011, 17:38  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 447
Репутация: 11   ±
Замечания:   ±
На сайте с 10.09.2007

Статус: Offline

Наверное у вас в Протеусе указано показывать эту переменную как Signed Integer а вам надо Unsigned Integer .
Matrix252005 Дата: Чт, 10.03.2011, 17:43  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 636
Репутация: 43   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток.

Пардон, я ошибся...

Буду разбираться дальше....


THE TRUTH IS OUT THERE.

С уважением, Николай.

Сообщение отредактировал Matrix252005 - Чт, 10.03.2011, 17:48
brown Дата: Чт, 10.03.2011, 17:59  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

terrarus все правильно описал.

Может сделать так
If Temp_read =< u then
Erore = U - Temp_read + 1
else
Erore = 0
endif

Out = (100 * Erore) + K


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
mikhail09p Дата: Чт, 10.03.2011, 18:44  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Quote (Matrix252005)
Приятного времени суток. Пардон, я ошибся... Буду разбираться дальше....

Николай, что это было?

brown, мне не нужно сравнение ДО формулы. Сам расчёт неверный происходит. Самое главное, что и в железе тоже подтверждается.

ivan_fd Дата: Чт, 10.03.2011, 19:18  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

В какой момент происходит неверный расчет? Смотрел, вроде бы все нормально.
mikhail09p Дата: Чт, 10.03.2011, 19:38  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Как нормально? Какое значение Out при температуре 17.6 и меньше? Надо, чтобы было больше или равно 600.
ivan_fd Дата: Чт, 10.03.2011, 20:28  |                                                                                                                Сообщение # 8
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Вот такое:

Code
(100*327)+200 = 32900

Прикрепления: 7251345.png (1.1 Kb)

Сообщение отредактировал ivan_fd - Чт, 10.03.2011, 20:31
mikhail09p Дата: Чт, 10.03.2011, 22:34  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 481
Репутация: 14   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

А у меня было -32*** ! Что же барахлит? Главное, в железе тоже не работало...
ivan_fd Дата: Чт, 10.03.2011, 23:16  |                                                                                                                Сообщение # 10
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну так Вам же retas написал, что нужно поставить Unsigned Integer!!!!

В прогу сильно не смотрел, лень разбираться. Опишите кратко алгоритм, легче будет понять.

Сообщение отредактировал ivan_fd - Чт, 10.03.2011, 23:26
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Перемменные (Типы переменных)
  • Страница 1 из 1
  • 1
Поиск: