Страница 711 из 804 ПерваяПервая ... 211611661701709710711712713721761 ... ПоследняяПоследняя
Показано с 7,101 по 7,110 из 8035

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #7101

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Это значит, что указанным способом (вычисление интервала времени между текущим показанием TIME и записанным предыдущим) можно измерять интервалы времени не более 49d17h2m47s295ms. Замечу, что это не зависит от начального значения TIME()
    И ??
    Вот у меня предыдущее значение записалось, допустим, PrevTime = 49d17h2m47s000ms (равное текущему показанию счёта). Следующее вычисление (интервал) - через 500 ms. "TiME() минус PrevTime". Какой будет результат ? TIME() будет дальше продолжать отсчёт и мне интервал нормально вычислит = 500 ms? Я то думал, что может перепрыгнуть через "0" и выдаст отрицательный результат.

  2. #7102

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вот Вы даже знаете последнее число в диапазоне, разве сложно перед заданием вопроса вычесть из текущего значения что нибудь из прошлого. К приvеру из 100 вычесть 5 или из 100 вычесть TIME_TO_UDINT(T#49d17h2m47s0ms)
    Не понял Вашу логику, зачем? Я не могу менять значение TIME() или сбросить его без перезагрузки программы.

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

    По умолчанию

    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    И ??
    ...допустим, PrevTime = 49d17h2m47s000ms (равное текущему показанию счёта). Следующее вычисление (интервал) - через 500 ms. "TiME() минус PrevTime". Какой будет результат ?
    Естественно будет
    TiME() минус PrevTime = 500 ms
    26 лет деятельности в области промышленной безопасности

  4. #7104

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    и не надо ни чего менять, ответите на вопрос чему будет равно значение UDINT_TO_TIME(TIME_TO_UDINT(T#2m47s0ms) - TIME_TO_UDINT(T#49d17h2m47s0ms)) ?
    "минус" 4194800000 ms. Или "минус" 49d17h0m00s000ms.
    А вообще то должен выдать ошибку, т.к. UDINT в диапазоне от 0 - не предусматривает отрицательных значений.
    И если так - выдаст ошибку и перезагрузит контроллер - мои проблемы решены
    Кстати, можно ли из самого проекта в режиме работы отдать команду на перезагрузку контроллера ??
    Последний раз редактировалось Eugene Vavilov; 04.09.2019 в 13:40.

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

    По умолчанию

    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    "минус" 4194800000 ms. Или "минус" 49d17h0m00s000ms.
    А вообще то должен выдать ошибку, т.к. UDINT в диапазоне от 0 - не предусматривает отрицательных значений.
    И если так - выдаст ошибку и перезагрузит контроллер - мои проблемы решены
    Кстати, можно ли из самого проекта в режиме работы отдать команду на перезагрузку контроллера ??
    А разве TIME может быть отрицательным?

    Правильный ответ 167296ms или 2m47s296ms

    ЗЫ
    Развернутый ответ на Ваш предыдущий вопрос
    ...допустим, PrevTime = 49d17h2m47s000ms (равное текущему показанию счёта). Следующее вычисление (интервал) - через 500 ms. "TiME() минус PrevTime". Какой будет результат ?
    TimeNow=49d17h2m47s000ms + 500ms = 204ms

    Интервал = TimeNow - PrevTime = 204ms - 49d17h2m47s000ms = 500ms
    Последний раз редактировалось petera; 04.09.2019 в 13:51.
    26 лет деятельности в области промышленной безопасности

  6. #7106

    По умолчанию

    ЗЫ
    Развернутый ответ на Ваш предыдущий вопрос

    49d17h2m47s000ms + 500ms = 204ms

    204ms - 49d17h2m47s000ms = 500ms
    Не очевидно, но факт! Не очевидно то, что (204 - 4194967000) = 500. Видимо, это связано, как Вы заметили, что TIME тоже не принимает отрицательных значений.
    Значит, фактически идёт переход через "0" ? Это нормально, пойдёт.
    Через 49 дней точно будет понятно Спасибо (у меня в режиме эмуляции почему то ничего не считает программа, поэтому не могу свои и чужие догадки или размышления проверять без контроллера)

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

    По умолчанию

    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    Не очевидно, но факт! Не очевидно то, что (204 - 4194967000) = 500. Видимо, это связано, как Вы заметили, что TIME тоже не принимает отрицательных значений.
    Значит, фактически идёт переход через "0" ? Это нормально, пойдёт.
    Через 49 дней точно будет понятно Спасибо (у меня в режиме эмуляции почему то ничего не считает программа, поэтому не могу свои и чужие догадки или размышления проверять без контроллера)
    Почему не очевидно?
    Целочисленная арифметика без знаковых чисел, числа представлены 4 байтами(32бита)
    Операции вычитания в этом случае заменяются операцией сложения с числом в дополнительном коде
    Дополнительный код 4294967000 == NOT(4294967000) + 1 = 296
    (204 - 4294967000) = 204 + 296 = 500

    ЗЫ
    49d17h2m47s000ms = 4294967000
    Последний раз редактировалось petera; 04.09.2019 в 14:28.
    26 лет деятельности в области промышленной безопасности

  8. #7108

    По умолчанию

    Извините, не сталкивался с целочисленной арифметикой без знаковых чисел раньше, про дополнительные коды не слышал.
    Так по факту, значение TIME() - на дисплее или в программе, по достижении T#49d17h2m47s295ms, далее изменится на 0 и начинается отсчёт с нуля. Удалось проверить.
    Спасибо за разъяснения!

  9. #7109

    По умолчанию

    Подскажите что за ошибка:
    Скриншот 2019-09-04 15.38.48.png

  10. #7110
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,486

    По умолчанию

    Цитата Сообщение от Eugene Vavilov Посмотреть сообщение
    Извините, не сталкивался с целочисленной арифметикой без знаковых чисел раньше
    Да ладно. Сталкивались все, всю жизнь, регулярно. Например :
    Фильм начался в 23-00, закончился в 1-00. Сколько шел фильм ?

Страница 711 из 804 ПерваяПервая ... 211611661701709710711712713721761 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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