Количество значащих цифр

Вопросы, не попадающие в другие разделы.

Количество значащих цифр

Сообщение MaxXx » Ср фев 26, 2014 2:40 pm

Добрый день.

Подскажите как увеличить количество значащих цифр при вводе значения типа MemoryReal?

Объясняю ситуацию:

Имеется тег типа MemoryReal (например RealTag1) (MinVal: 0 - MaxVal: 100 Retentive Value = true)
Рисую в окне текст #.####### (семь # после запятой).
Привязываю тег к тексту на ввод (InPut->_ Tagname ) (Minimum 0 - Maximum 100)

Далее в WindowViewer в тексте ввожу 12.123456789 нажимаю "энтер". В окне соответсвенно 12.1234568 (это правильно).
ОДНАКО!!! после перезагрузки WindowViewer в окне значение оказывается 12.1235000!
Или просто при новом вводе значения в поле ввода показывает число 12.1235 (хотя до этого вводил 12.123456789)
Ну и в RealTag1.InitialValue тоже заносится 12.1235 (т.е. 6 значащих цифр)

Возникает вопрос: Как увеличить количество значащих цифр?
MaxXx
 
Сообщения: 37
Зарегистрирован: Пн авг 20, 2007 2:06 pm

Re: Количество значащих цифр

Сообщение skom » Ср фев 26, 2014 3:44 pm

Почитайте про стандарт floating point. http://en.wikipedia.org/wiki/IEEE_floating_point
Масштабируйте значение, т.е. храните например увеличенное в 1000 раз, а выводите соответственно уменьшенное значение.
skom
 
Сообщения: 173
Зарегистрирован: Вт окт 02, 2007 5:25 pm

Re: Количество значащих цифр

Сообщение MaxXx » Чт фев 27, 2014 10:25 am

skom,Ваш совет масштабировать значение, к сожалению, не подходит для данной ситуации.
Дело в том, что когда я присваиваю тегу значение 12345.1234567 в RealTag1.InitialValue записывается 12345.1 (те же самые 6 значащих цифр)
На экране нужно выводить семь знаков после запятой.
MaxXx
 
Сообщения: 37
Зарегистрирован: Пн авг 20, 2007 2:06 pm

Re: Количество значащих цифр

Сообщение Генератор зла » Чт фев 27, 2014 11:59 am

skom писал(а):Почитайте про стандарт floating point

Зачем так далеко ходить? Всё в хелпе InTouch:

Showing Floating Point Numbers in the InTouch HMI
The InTouch HMI uses the IEEE 32-bit floating point format to show real numbers in an application. The IEEE floating point format is only an approximation of an actual real number. Unless the real number is an even power of two, it cannot be represented exactly using the IEEE 32-bit floating point format. The precision of an IEEE 32-bit floating point number is approximately eight decimal places.
When you want to show a real number in an InTouch application, make sure the number does not exceed eight digits. The following floating-point number formats show valid real numbers within an InTouch application:
#.#######
###.#####
######.##
Any floating-point numbers with more than eight digits are subject to rounding errors.
Example
An InTouch application should show the real number 2.3. But, the number 2.3 is not an even power of two and cannot be precisely represented by the IEEE 32-bit floating point format beyond 8 decimal digits.
To ensure the value 2.3 is shown from the application as the ASCII characters 2.3, the number must not exceed eight digits. If the number exceeds the eight digit maximum, the resulting number may be shown as 2.29999999 or 2.30000001 instead.
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Количество значащих цифр

Сообщение Генератор зла » Чт фев 27, 2014 12:00 pm

Преобразуйте в строку ;)
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Количество значащих цифр

Сообщение MaxXx » Пт фев 28, 2014 5:07 pm

Ну вот даже в хелпе интача написано, что восемь значащих цифр, а по факту 6. Вот 8 меня вполне бы устроило.
В строку тоже не вариант переводить.

В общем в проекте все прекрасно считается до тех пор, пока оператор не выключит АРМ. При включении АРМа последний знак "теряется". Надо забивать заново.
MaxXx
 
Сообщения: 37
Зарегистрирован: Пн авг 20, 2007 2:06 pm

Re: Количество значащих цифр

Сообщение Генератор зла » Пт фев 28, 2014 10:00 pm

MaxXx писал(а):Ну вот даже в хелпе интача написано, что восемь значащих цифр, а по факту 6

Прибавьте знак (+/-) и разделитель ;)
Попробуйте хранить (в Tagname Dictionary) значения как Integer, а на экран выводить как делённые на ххх
Vita est dolor.
Генератор зла
 
Сообщения: 2860
Зарегистрирован: Вс янв 23, 2011 5:08 pm

Re: Количество значащих цифр

Сообщение engineer_ua » Пн май 04, 2020 4:54 pm

Генератор зла писал(а):Преобразуйте в строку ;)


зачем преобразовывать в строку, в чем секрет?

я столкнулся с аналогичной проблемой...
есть тег типа I/O Real нужно отображать три знака после запятой... задаю формат
###.### отображается только два знака 2.82 (это при Formating Real)
если поменять Formatting->Text String отображается корректно три знака после запятой 2.820 (принтскрин прикреплен)

почему так происходит, почему Real нужно преобразовывать в строчку....где логика???

Изображение
engineer_ua
 
Сообщения: 226
Зарегистрирован: Пн мар 23, 2015 1:49 pm


Вернуться в Другое

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

cron