Страница 830 из 1043 ПерваяПервая ... 330730780820828829830831832840880930 ... ПоследняяПоследняя
Показано с 8,291 по 8,300 из 10426

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

  1. #8291
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    Всем привет!
    есть вопрос... помогите пожалуйста....
    переменная "А" тип INT изменяется -32767...0...32767-> -32767...0...32767.... и т.д.... т.е на выходе "пила" (это счетчик)
    как ее преобразовать в DWORD чтобы считало от 0... и далшьше...??

  2. #8292

    По умолчанию

    Цитата Сообщение от DIPHENHYDRAMINE Посмотреть сообщение
    Всем привет!
    есть вопрос... помогите пожалуйста....
    переменная "А" тип INT изменяется -32767...0...32767-> -32767...0...32767.... и т.д.... т.е на выходе "пила" (это счетчик)
    как ее преобразовать в DWORD чтобы считало от 0... и далшьше...??
    Так объявите её как DWORD, будет от 0 до 4 миллиардов считать.
    Можно сделать переменную тип DINT, будет +-2миллиарда считать.
    Преобразовать просто, INT_TO_DWORD или INT_TO_DINT, только может не всё так просто, смотря как и где она используется.
    Последний раз редактировалось kondor3000; 02.12.2021 в 20:26.

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

    По умолчанию

    Цитата Сообщение от DIPHENHYDRAMINE Посмотреть сообщение
    Всем привет!
    есть вопрос... помогите пожалуйста....
    переменная "А" тип INT изменяется -32767...0...32767-> -32767...0...32767.... и т.д.... т.е на выходе "пила" (это счетчик)
    как ее преобразовать в DWORD чтобы считало от 0... и далшьше...??
    Прибавь константу 32767
    B:= А + 32767;

    Код:
    VAR
    	B: DWORD;
    	A: INT;
    END_VAR
    B:= A + 32767;
    Только зачем в DWORD преобразовывать если будет от 0 до 65534?
    Достаточно WORD


    ЗЫ. Поправочка
    Может Вы в исходных данных ошиблись?
    Диапазон INT от -32768 до 32767

    B:= A + 32768; ?
    Последний раз редактировалось petera; 02.12.2021 в 20:29.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    А, если объявить(преобразовать) в UINT, разве не будет показывать диапазон 0-65535 ?
    Последний раз редактировалось Сергей0308; 02.12.2021 в 20:32.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #8295

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    А, если объявить(преобразовать) в UINT, разве не будет показывать диапазон 0-65535 ?!
    И в UINT и WORD будет показывать диапазон 0-65535.

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

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    А, если объявить(преобразовать) в UINT, разве не будет показывать диапазон 0-65535 ?
    Цитата Сообщение от kondor3000 Посмотреть сообщение
    И в UINT и WORD будет показывать диапазон 0-65535.
    Не будет
    INT_TO_WORD(A) просто отбросит знак
    т.е.
    INT_TO_WORD(-32767) = 32767
    ЗЫ.
    Я ошибся
    INT_TO_WORD(-32768) = 32768

    INT_TO_WORD(-32767) = 32769
    INT_TO_WORD(-32766) = 32770
    INT_TO_WORD(-32765) = 32771
    ...........................................
    INT_TO_WORD(-1) = 65535
    INT_TO_WORD(0) = 0
    INT_TO_WORD(1) = 1
    ........................................
    INT_TO_WORD(32767) = 32767

    Не та пила будет.
    Последний раз редактировалось petera; 02.12.2021 в 20:48.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

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

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Не будет
    INT_TO_WORD(A) просто отбросит знак
    т.е.
    INT_TO_WORD(-32767) = 32767
    ЗЫ.
    Я ошибся
    INT_TO_WORD(-32768) = 32768

    INT_TO_WORD(-32767) = 32769
    INT_TO_WORD(-32766) = 32770
    INT_TO_WORD(-32765) = 32771
    ...........................................
    INT_TO_WORD(-1) = 65535
    INT_TO_WORD(0) = 0
    INT_TO_WORD(1) = 1
    ........................................
    INT_TO_WORD(32767) = 32767

    Не та пила будет.
    В инте отрицательные числа передаются(обычно) в дополнительном коде в диапазоне 32768-65535, "мозги" это отображают как "-32768" - "-1"!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  8. #8298

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение

    Не та пила будет.
    Так он сам просил от 0 и дальше. Ну досчитает если WORD до 65535 и опять с 0 пойдёт.

  9. #8299
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Так он сам просил от 0 и дальше. Ну досчитает если WORD до 65535 и опять с 0 пойдёт.
    пила не нужна... нужно о 0 и до.. 4 млд достаточно будет.... 65535 мало....

  10. #8300
    Пользователь Аватар для DIPHENHYDRAMINE
    Регистрация
    14.01.2018
    Адрес
    Воскресенск
    Сообщений
    42

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Так объявите её как DWORD, будет от 0 до 4 миллиардов считать.
    Можно сделать переменную тип DINT, будет +-2миллиарда считать.
    Преобразовать просто, INT_TO_DWORD или INT_TO_DINT, только может не всё так просто, смотря как и где она используется.
    это не возможно.... это физичиский вход модуля МВ11016ДН

Страница 830 из 1043 ПерваяПервая ... 330730780820828829830831832840880930 ... ПоследняяПоследняя

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

Ваши права

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