Страница 8 из 375 ПерваяПервая ... 6789101858108 ... ПоследняяПоследняя
Показано с 71 по 80 из 4481

Тема: разные вопросы новичка

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для maximov2009
    Регистрация
    11.09.2012
    Адрес
    Барнаул Алтайский край
    Сообщений
    2,465

    По умолчанию

    А что собственно Вас не устраивает. Уберите преобразователь в инт и всё. Если Вас смущают цифирки типа 2,5Е и т.д., то это просто форма отображения в симуляторе. При выводе на экран ПР200 или дальнейшей обработке, программа работает именно как с числом 25. И покажет именно 25 градусов.
    И если дальше в программе будете сравнивать, все как с обычными отрицательными цифрами. Только использовать блоки с приставкой f. Например fsel для для вещественного числа а не sel для целочисленного.
    Такая вот особенность симулятора. Это уже не раз обсуждалось.
    Последний раз редактировалось maximov2009; 27.02.2017 в 10:31.
    Лучшее - враг хорошего "Le mieux est I\'ennemi du bien" (вроде как Вольтеровское)

  2. #2

    По умолчанию

    Цитата Сообщение от maximov2009 Посмотреть сообщение
    А что собственно Вас не устраивает. Уберите преобразователь в инт и всё. Если Вас смущают цифирки типа 2,5Е и т.д., то это просто форма отображения в симуляторе. При выводе на экран ПР200 или дальнейшей обработке, программа работает именно как с числом 25. И покажет именно 25 градусов.
    И если дальше в программе будете сравнивать, все как с обычными отрицательными цифрами. Только использовать блоки с приставкой f. Например fsel для для вещественного числа а не sel для целочисленного.
    Такая вот особенность симулятора. Это уже не раз обсуждалось.
    Спасибо! Да, именно отображение смутило. Хотелось понимать на сколько верно работает конвертация и сравнить с показаниями моего датчика. Убрал int, все работает корректно но выглядит в симуляторе не очень
    Еще такой вопрос, я хочу сделать модуляцию котла, т.е. включать/отключать тэны в зависимости от роста температуры сравнивая результат за период. Достаточно примитивный алгоритм, 3 тена - Включил один, посмотрел на рост температуры, нет роста включил второй и далее третий. Если достиг нужной температуры, пытаться ее поддержать за счет включения/отключения тэнов. Есть ли какой-то подобный пример чтобы поучиться?

  3. #3

    По умолчанию

    Цитата Сообщение от Diminator Посмотреть сообщение
    Спасибо! Да, именно отображение смутило. Хотелось понимать на сколько верно работает конвертация и сравнить с показаниями моего датчика. Убрал int, все работает корректно но выглядит в симуляторе не очень
    В версии 1.7 было 8 знаков у FLOAT.

    Еще такой вопрос, я хочу сделать модуляцию котла, т.е. включать/отключать тэны в зависимости от роста температуры сравнивая результат за период. Достаточно примитивный алгоритм, 3 тена - Включил один, посмотрел на рост температуры, нет роста включил второй и далее третий. Если достиг нужной температуры, пытаться ее поддержать за счет включения/отключения тэнов. Есть ли какой-то подобный пример чтобы поучиться?
    1) мощность ТЭНов одинаковая? или это 3 группы с разной мощностью?
    2) лучше это делать по уровню выходного сигнала с ПИД регулятора: при 0,0-0,2 работает одна группа, по мере роста уровня сигнала подключаем остальные группы.
    Важно, чтобы мощность регулировочной ступени перекрывала по мощности самую малую добавочную.
    регулир. ТЭН - 30%
    1 ступень - 25%
    2 ступень -45%

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

    По умолчанию

    Так если он преобразует отрицательные значения температуры(FLOAT) в INT, что в ОЛ, т. е. UDINT, то я извиняюсь, Землю уничтожить можно, получится более 4 миллиардов градусов, а термоядерная реакция синтеза гелия из водорода начинается уже при 15 миллионах!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #5
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,990

    По умолчанию

    Округлите значение float до 2-х знаков и не будет у вас отображаться в экспоненте.

    В макросах поищите, вроде был макрос, который следил за сигналом и на выходе давал растет сигнал или уменьшается (направление показывал), может пригодится для отслеживания.

  6. #6

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Округлите значение float до 2-х знаков и не будет у вас отображаться в экспоненте.
    А как это сделать?

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

    По умолчанию

    Цитата Сообщение от Diminator Посмотреть сообщение
    А как это сделать?
    Как-то так:

    Округление_1.PNG
    Последний раз редактировалось Сергей0308; 28.02.2017 в 00:14.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  8. #8
    Пользователь
    Регистрация
    21.01.2011
    Адрес
    еБург
    Сообщений
    890

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Как-то так:
    Округление_1.PNG
    Верхняя конструкция получения знака числа слишком громоздкая.
    (особенно если учесть что внутри fSel тоже не один элемент)
    для получения знака числа достаточно просто разделить число на его модуль (или наоборот), т.е. |x|/x
    PS с учётом что модуль у вас уже есть - то надо всего лишь один элемент - fDIV
    начинающий профессионал

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

    По умолчанию

    Цитата Сообщение от AI! Посмотреть сообщение
    Верхняя конструкция получения знака числа слишком громоздкая.
    (особенно если учесть что внутри fSel тоже не один элемент)
    для получения знака числа достаточно просто разделить число на его модуль (или наоборот), т.е. |x|/x
    PS с учётом что модуль у вас уже есть - то надо всего лишь один элемент - fDIV
    Так Вы, если не ошибаюсь, уже такое выкладывали(усовершенствовали), конечно проще получится, но я и не претендовал на совершенство!

    Округление с заданием количества знаков после запятой_1.PNG
    Последний раз редактировалось Сергей0308; 02.03.2017 в 01:34.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  10. #10
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,108

    По умолчанию

    Внесу ясность.
    Не буду цитировать все посты с #11 по #17, но
    Преобразование Float To Int выполняется корректно, по всем правилам компьютерной математики!
    И преобразованные значения получаются никакие не UDINT, а именно INT, т.е со знаком!
    Если смущают миллиарды после -10.0 -->Float To Int-->4294967286, то 4294967286 (FFFF FFF6) это и есть -10 в дополнительном коде
    поясню. Целые числа со знаком(INT) в ЭВМ представлены в дополнительном коде.
    Он позволяет заменить операцию вычитания на операцию сложения и сделать операции сложения и вычитания одинаковыми для знаковых и беззнаковых чисел, чем упрощает архитектуру ЭВМ.
    В таком же виде -10 представлено и в кодесис http://www.owen.ru/forum/showthread....l=1#post220154, и в панели СП, и т.д.
    Таким образом если положить 4294967286 (FFFF FFF6) в сетевую переменную, которую читать из панели, то на дисплее панели одна и та же переменная (FFF6) отобразится как 65526 в формате Unsigned или -10 в формате Dec.

    В ПР математические операции ADD, MUL, DIV для чисел в дополнительном коде будут выполнятся правильно по определению. Тут даже никаких лишних макросов не нужно.
    Т.е. если -10, а это 4 294 967 286(FFFF FFF6) умножить(MUL) на 1000, то получим результат всего лишь 4 294 957 296 (FFFF D8F0) - не что иное, как -10000 в дополнительном коде.
    Фактически для операций ADD, MUL, DIV числа 0 до 2147483647 - положительные, а от 2147483648 до 4294967295 - отрицательные в дополнительном коде
    Вот только в самой среде редактирования ОЛ почему то ПРАВИЛЬНЫЕ значения INT отображаются как целые беззнаковые.
    Последний раз редактировалось petera; 27.02.2017 в 14:08.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 8 из 375 ПерваяПервая ... 6789101858108 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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