Страница 3 из 199 ПерваяПервая 123451353103 ... ПоследняяПоследняя
Показано с 21 по 30 из 1989

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

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Внесу ясность.
    Не буду цитировать все посты с #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 отображаются как целые беззнаковые.
    Вы же участвовали в обсуждении по этой теме: http://www.owen.ru/forum/showthread....EF%F0%EE%F1%FB
    Короче в 2 словах: в ОЛ INT(DINT) это UINT(UDINT)! Это они так решили "перекрестить"!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  2. #22

    По умолчанию

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

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

    По умолчанию

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

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

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

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Вы же участвовали в обсуждении по этой теме: http://www.owen.ru/forum/showthread....EF%F0%EE%F1%FB
    Короче в 2 словах: в ОЛ INT(DINT) это UINT(UDINT)! Это они так решили "перекрестить"!
    В том-то и фишка, что если целое отрицательное число представлено в дополнительном коде, то результаты арифметических операций положительных и отрицательных в любой комбинации всегда будет верным.
    Для процессора и те и другие числа просто набор ноликов и единичек. Это для человека нужен + да -, чтобы он сразу видел это положительное число или отрицательное. Смотря в какой системе координат рассматривать эти наборы ноликов и единичек.
    Если в системе координат где нет отрицательных чисел, то FFF6 означает 65526
    А если система координат предполагает наличие отрицательных чисел, то FFF6 означает минус 10
    26 лет деятельности в области промышленной безопасности

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    В том-то и фишка, что если целое отрицательное число представлено в дополнительном коде, то результаты арифметических операций положительных и отрицательных в любой комбинации всегда будет верным.
    Для процессора и те и другие числа просто набор ноликов и единичек. Это для человека нужен + да -, чтобы он сразу видел это положительное число или отрицательное. Смотря в какой системе координат рассматривать эти наборы ноликов и единичек.
    Если в системе координат где нет отрицательных чисел, то FFF6 означает 65526
    А если система координат предполагает наличие отрицательных чисел, то FFF6 означает минус 10
    Да, замечательная фишка! Особенно наверно тогда, когда на экране ПР или в симуляторе ОЛ вместо ожидаемых "-10", видишь миллиарды, сразу наверно думаешь, как хорошо, что арифметические операции верно выполнены! Но я не про это, это всё может и верно с операциями, осталось INT(DINT) назвать UINT(UDINT), чтобы люди меньше путались, а то и Вы уже пишите, цитирую:"Вот только в самой среде редактирования ОЛ почему то ПРАВИЛЬНЫЕ значения INT отображаются как целые беззнаковые". И Вы правы, потому, что понимаете INT как целое знаковое(как и я), а у них(в ОЛ) оказывается(кто бы мог подумать) INT - целое беззнаковое!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

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

    По умолчанию

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

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

    По умолчанию

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

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

  8. #28

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    конечно проще получится, но я и не претендовал на совершенство!
    Спасибо, отличный макрос, работать просто в разы приятнее и удобнее!

    Продолжу задавать глупые вопросы, я не могу понять, как "очеловичить" вывод сообщений на экран? Т.е. если у меня в переменной "Статус" имеет значение "1" выдать на экран что человеческое, допустим слово "Нагрев"?

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

    По умолчанию

    Добрый день. Когда на экране создаёте булевую переменную, в параметрах указываете текст для 0 и 1, для фальши и лжи. Там для примера даже по умолчанию написано Пуск и Стоп. Их стираете и пишете какие Вам надо слова.
    Можно и побитно, присвоить каждому биту переменной своё словечко. Это уже через КОМБОБОКС.
    С уважением.
    Последний раз редактировалось maximov2009; 01.03.2017 в 04:22.
    Лучшее - враг хорошего "Le mieux est I\'ennemi du bien" (вроде как Вольтеровское)

  10. #30

    По умолчанию

    Спасибо! Правда я думал что ОЛ более гибкий и позволяет создавать конструкции типа set переменная - значение и соответственно их вывод. А все намного сложнее оказалось. Да и вообще, любое движение или небольшая хотелка упирается в ковыряние макросов и не самой простой реализацией.

Страница 3 из 199 ПерваяПервая 123451353103 ... ПоследняяПоследняя

Похожие темы

  1. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 12
    Последнее сообщение: 03.07.2019, 15:50
  2. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 15:39
  3. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 06.09.2011, 15:12
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 10:29

Ваши права

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