|
Формат с плавающей точкой, подскажите как заменить |
|
|
|
Sep 1 2008, 06:51
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Проблема состоит в том, что у меня контроллев F2013, соответственно у него 2к памяти. Для преобразования напряжения с АЦП в температуру используется полиномы 6й и 9й степени. Что бы не потерять точность необходимо использовать формат с плавающей точкой, но при его использовании и совершении операций над ним библиотеки умножения занимают минимум 700 байт. Вообщем это слишком жирно. Пробовал сделать свой формат, тоже плавающий, но умножать на 2в степени. После того как перемножал два int, получал long, потом сдвигал вправо до int и увеличивал степень. Но при этом точность падала. В некоторых случаях стала неудовлетворительной. Предложите, чем можно заменить, как обойти.
|
|
|
|
|
 |
Ответов
|
Sep 1 2008, 10:47
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Алексей Савченко @ Sep 1 2008, 10:51)  Проблема состоит в том, что у меня контроллев F2013, соответственно у него 2к памяти. Для преобразования напряжения с АЦП в температуру используется полиномы 6й и 9й степени. Что бы не потерять точность необходимо использовать формат с плавающей точкой, но при его использовании и совершении операций над ним библиотеки умножения занимают минимум 700 байт. Вообщем это слишком жирно. Пробовал сделать свой формат, тоже плавающий, но умножать на 2в степени. После того как перемножал два int, получал long, потом сдвигал вправо до int и увеличивал степень. Но при этом точность падала. В некоторых случаях стала неудовлетворительной. Предложите, чем можно заменить, как обойти. Какую же точность по температуре и в каком диапазоне Вы пытаетесь получить на выходе, что приходится пускаться в такие тяжкие? Неужели характеристика датчика (какого?) и преобразователя до такой степени нелинейна, что не позволяет обойтись какой-либо кусочной аппроксимацией с 1-байтовой коррекцией? имхо, целочисленной 2-байтовой арифметики с промежуточными результатами в 3-байтовом виде вполне достаточно. Ну и методическая ошибка - утаптывать задачу в приглянувшийся контроллер, а не подобрать контроллер под задачу.
|
|
|
|
|
Sep 1 2008, 11:06
|
Участник

Группа: Участник
Сообщений: 29
Регистрация: 20-08-08
Из: г.Чернигов, Украина
Пользователь №: 39 704

|
Цитата(xemul @ Sep 1 2008, 13:47)  Какую же точность по температуре и в каком диапазоне Вы пытаетесь получить на выходе, что приходится пускаться в такие тяжкие? Неужели характеристика датчика (какого?) и преобразователя до такой степени нелинейна, что не позволяет обойтись какой-либо кусочной аппроксимацией с 1-байтовой коррекцией? имхо, целочисленной 2-байтовой арифметики с промежуточными результатами в 3-байтовом виде вполне достаточно. Ну и методическая ошибка - утаптывать задачу в приглянувшийся контроллер, а не подобрать контроллер под задачу. На счет ошибки согласен. Но контроллер был выбран до того как поручили развели плату и сделали. Осталось писать код и подстраиваться под условия. Точность по температуре надо 0.25% в диалазоне -50-1250. Сигнал обрабатывается от термопары(ТХА). Там для преобразования напряжения в температуру используются полиномы 6й и 9й степени. Вот и выходит что числа слишком большие выходят.
|
|
|
|
|
Sep 1 2008, 13:24
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(Алексей Савченко @ Sep 1 2008, 15:06)  На счет ошибки согласен. Но контроллер был выбран до того как поручили развели плату и сделали. Осталось писать код и подстраиваться под условия. В MSP не копенгаген, но неужели нет pin2pin и функционально совместимого контроллера с 4 КБ флеша? Цитата Точность по температуре надо 0.25% в диалазоне -50-1250. Сигнал обрабатывается от термопары(ТХА). Там для преобразования напряжения в температуру используются полиномы 6й и 9й степени. Вот и выходит что числа слишком большие выходят. На память не надеюсь, но грызут меня сомнения насчет точности ТХА в диапазоне >500 C. И коэффициенты в полиноме аппроксимации ТХА, по-моему, присутствуют все, а не только 6-й и 9-й степени. Варианты: 1) кусочно-линейная аппроксимация (с большой кучей кусочков); 2) аппроксимация 2-й степенью (на меньшем числе кусочков). При этом Вы уложитесь в целочисленную 3-4-байтовую арифметику. При желании внутри каждого кусочка операцию разбиения можно повторить до достижения требуемой точности аппроксимации. Н-р, первая кусочно-линейная нарезка выполняется с 1% точностью, вторая кусочно-линейная нарезка обеспечивает требуемые 0.25%; результат соответствует параболической аппроксимации, считается быстрее (на одно умножение), но таблиц будет чуть больше (с другой стороны, эти таблицы можно будет свести вообще к 1-байтовым).
|
|
|
|
Сообщений в этой теме
Алексей Савченко Формат с плавающей точкой Sep 1 2008, 06:51 gotty А что вы дальше с температурой делаете? если посыл... Sep 1 2008, 06:57 Алексей Савченко Действительно, посылаю на ПК через RS485. Но дело ... Sep 1 2008, 07:17 MrYuran Цитата(Алексей Савченко @ Sep 1 2008, 10... Sep 1 2008, 07:26 Алексей Савченко Вообщем то жалко и даж очень. Тут еще должно быть ... Sep 1 2008, 07:39 Dog Pawlowa Цитата(Алексей Савченко @ Sep 1 2008, 10... Sep 1 2008, 09:09  rezident Цитата(Dog Pawlowa @ Sep 1 2008, 15:09) 1... Sep 1 2008, 11:37  Алексей Савченко Цитата(Dog Pawlowa @ Sep 1 2008, 12:09) 1... Sep 6 2008, 08:15   xemul Цитата(Алексей Савченко @ Sep 6 2008, 12... Sep 6 2008, 18:17    rezident Цитата(xemul @ Sep 7 2008, 00:17) В сомне... Sep 6 2008, 18:40     xemul Цитата(rezident @ Sep 6 2008, 22:40) ГОСТ... Sep 6 2008, 21:23      Алексей Савченко Цитата(xemul @ Sep 7 2008, 00:23) Всю таб... Sep 7 2008, 07:58       xemul Цитата(Алексей Савченко @ Sep 7 2008, 11... Sep 7 2008, 08:41        Алексей Савченко Цитата(xemul @ Sep 7 2008, 11:41) но не д... Sep 7 2008, 09:13         xemul Цитата(Алексей Савченко @ Sep 7 2008, 13... Sep 7 2008, 12:09          Tanya Вопрос Автору.
Как Вы понимаете пресловутые 0.25%?... Sep 7 2008, 12:50           Алексей Савченко Цитата(Tanya @ Sep 7 2008, 15:50) Вопрос ... Sep 8 2008, 15:30            Tanya Цитата(Алексей Савченко @ Sep 8 2008, 19... Sep 8 2008, 16:12   rezident Цитата(xemul @ Sep 1 2008, 19:24) В MSP н... Sep 1 2008, 13:31 SergeyBorshch Если не нужна точность (в пределах +- 1градус) и н... Sep 1 2008, 11:11 Алексей Савченко Приглянулась мне мысль насчет кусочно линейной апр... Sep 1 2008, 13:52 MrYuran Цитата(Алексей Савченко @ Sep 1 2008, 17... Sep 2 2008, 12:24 SergeyBorshch А вы на чем пишете? Судя по всему на С.
Попробуйт... Sep 2 2008, 12:14 rezident Цитата(SergeyBorshch @ Sep 2 2008, 18:14)... Sep 3 2008, 00:01
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|