Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Некорректно переводит float в integer

  1. #1

    По умолчанию Некорректно переводит float в integer

    Всем доброго времени суток. Пытаюсь написать макрос счетчика для приборов учета воды, столкнулся с некорректным переводом из float в int, на скриншоте из режима эмуляции видно, что 56 float переводится в 55 integer. 2,11 разделяется как 2 и 10, 2,15 - корректно, 2 и 15. 2,05 - 2 и 4. Прошу пояснить, с чем это связано и что я делаю не так? Также интересует вопрос, как можно сохранить значения счетчиков в энергонезависимой памяти при обновлении программы? Цель данной части проекта - учитывать дистанционно показания приборов учета, поэтому при обновлении программы неприемлема потеря данных. Спасибо.
    Изображения Изображения

  2. #2

    По умолчанию

    А нельзя ли ссылку на тему? Поиском не нашел. И про сохранение данных есть какое-то решение? За решение с преобразованием спасибо, все заработало.
    Последний раз редактировалось acidzone; 02.10.2021 в 17:27.

  3. #3

    По умолчанию

    Цитата Сообщение от acidzone Посмотреть сообщение
    А нельзя ли ссылку на тему? Поиском не нашел. И про сохранение данных есть какое-то решение? За решение с преобразованием спасибо, все заработало.
    Вижу только вариант, переписать значения и после обновления внести эти значения, хотя не очень понятно, зачем обновлять то, что уже работает.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  4. #4

    По умолчанию

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

  5. #5

    По умолчанию

    Ннуу, ващета, на мой взгляд, это и правда баг ОвенЛоджика. Тему старую не нашёл. Поменял порядок действий так, чтобы максимум операций выполнялось с числами в формате int. Вроде заработало. Что делает часть программы со счётчиками, не вникал; в своей тестовой версии просто заменил её константой 100.
    rs21 0.png

    По поводу сохранения значений. Пытался сделать вариант с резервным копированием переменных из мастера в слейв и наоборот. И, соответственно, последующим восстановлением после обновления программы. Но до практической реализации, увы, не дошло. Пока действую, как говорит Юрий: бумажка, карандашик и вперёд.

  6. #6

    По умолчанию

    Цитата Сообщение от dan75 Посмотреть сообщение
    Ннуу, ващета, на мой взгляд, это и правда баг ОвенЛоджика.
    Нужно просто учесть, что X->I не делает округление, он просто отбрасывает все что после запятой, для него что 5.1 что 5.9 на выходе 5.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  7. #7

    По умолчанию

    Цитата Сообщение от Ревака Юрий Посмотреть сообщение
    Нужно просто учесть, что X->I не делает округление, он просто отбрасывает все что после запятой, для него что 5.1 что 5.9 на выходе 5.
    Я это знаю, да. Фокусы почему-то начинаются при экспоненциальном представлении числа.
    rs26 0.png

  8. #8
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,161

    По умолчанию

    В начальной школе это называется стандартным видом числа:
    https://math-prosto.ru/ru/pages/stan...d_form_number/
    В какой-то теме уже обсуждали этот вопрос!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #9

    По умолчанию

    Цитата Сообщение от dan75 Посмотреть сообщение
    Я это знаю, да. Фокусы почему-то начинаются при экспоненциальном представлении числа.
    rs26 0.png
    Да, это интересно, я проверил на старой версии такая же история. Все становится понятно если умножить значение на 1000, видимо отображение на холсте отличается от представления в логике, там проходит 0.559
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  10. #10
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,161

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    и как эта ссылка отвечает на вопрос почему 56.0 превращается в 55?
    Неужели это может быть непонятным?
    Потому, что в таком представлении в ОЛ значение округляется, если быть точным это происходит при округлении в большую сторону, даже целочисленные значения округляются(если значения большие). Так в программе сделано, чтобы сократить длину(количество занимаемых знаков), насколько я понимаю! И это много раз обсуждалось. Вы уж точно видели подобные обсуждения! Например в константе значение 1000000001 округлится до 10 в 9-ой степени!

    Округление_2.PNG

    И 999999999 до 10 в степени 9:

    Округление_3.PNG

    Да, про ссылку забыл, ссылка лишь намекает, что лучше ёжика называть ёжиком, а не сусликом или ещё там как, чтобы всем понятно было, что Вы хотите сказать, для этого и разные слова придумали, иначе было бы достаточно одно слово придумать и называй им всё попало!

    Это, как раз наш случай!
    Последний раз редактировалось Сергей0308; 05.10.2021 в 10:55.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Плк 270 прошивка некорректно работает без пк
    от qweevitch в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 28.08.2019, 10:07
  2. как передать переменную integer по modbus
    от Линар в разделе СПК2хх
    Ответов: 7
    Последнее сообщение: 25.08.2016, 13:59
  3. как передать переменную integer по modbus
    от Линар в разделе Трёп (Курилка)
    Ответов: 1
    Последнее сообщение: 25.08.2016, 13:32
  4. ТРМ12. Некорректно показывает температуру
    от Mister в разделе Эксплуатация
    Ответов: 5
    Последнее сообщение: 13.01.2016, 14:36
  5. Переход от float (Nullable) к просто float
    от ASo в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 12.11.2014, 14:21

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •