реклама на сайте
подробности

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


Участник
*

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



Проблема состоит в том, что у меня контроллев F2013, соответственно у него 2к памяти. Для преобразования напряжения с АЦП в температуру используется полиномы 6й и 9й степени.
Что бы не потерять точность необходимо использовать формат с плавающей точкой, но при его использовании и совершении операций над ним библиотеки умножения занимают минимум 700 байт. Вообщем это слишком жирно.
Пробовал сделать свой формат, тоже плавающий, но умножать на 2в степени. После того как перемножал два int, получал long, потом сдвигал вправо до int и увеличивал степень. Но при этом точность падала. В некоторых случаях стала неудовлетворительной.
Предложите, чем можно заменить, как обойти.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Sep 1 2008, 10:47
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



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

Какую же точность по температуре и в каком диапазоне Вы пытаетесь получить на выходе, что приходится пускаться в такие тяжкие? Неужели характеристика датчика (какого?) и преобразователя до такой степени нелинейна, что не позволяет обойтись какой-либо кусочной аппроксимацией с 1-байтовой коррекцией? имхо, целочисленной 2-байтовой арифметики с промежуточными результатами в 3-байтовом виде вполне достаточно.
Ну и методическая ошибка - утаптывать задачу в приглянувшийся контроллер, а не подобрать контроллер под задачу.
Go to the top of the page
 
+Quote Post
Алексей Савченко
сообщение Sep 1 2008, 11:06
Сообщение #3


Участник
*

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



Цитата(xemul @ Sep 1 2008, 13:47) *
Какую же точность по температуре и в каком диапазоне Вы пытаетесь получить на выходе, что приходится пускаться в такие тяжкие? Неужели характеристика датчика (какого?) и преобразователя до такой степени нелинейна, что не позволяет обойтись какой-либо кусочной аппроксимацией с 1-байтовой коррекцией? имхо, целочисленной 2-байтовой арифметики с промежуточными результатами в 3-байтовом виде вполне достаточно.
Ну и методическая ошибка - утаптывать задачу в приглянувшийся контроллер, а не подобрать контроллер под задачу.


На счет ошибки согласен. Но контроллер был выбран до того как поручили развели плату и сделали. Осталось писать код и подстраиваться под условия.
Точность по температуре надо 0.25% в диалазоне -50-1250. Сигнал обрабатывается от термопары(ТХА). Там для преобразования напряжения в температуру используются полиномы 6й и 9й степени. Вот и выходит что числа слишком большие выходят.
Go to the top of the page
 
+Quote Post
xemul
сообщение Sep 1 2008, 13:24
Сообщение #4



*****

Группа: Свой
Сообщений: 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-байтовым).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Алексей Савченко   Формат с плавающей точкой   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


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 10:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016