Страница 27 из 36 ПерваяПервая ... 172526272829 ... ПоследняяПоследняя
Показано с 261 по 270 из 365

Тема: CoDeSys v2.3

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для Aleksey9952
    Регистрация
    30.10.2012
    Адрес
    Краснодар
    Сообщений
    50

    По умолчанию

    Та нет, простой таймер и я могу написать))) я сам уже разобрался, спс)))

  2. #2

    По умолчанию Преобразование типов

    Здравствуйте, коллеги.
    Попал мне в руки ПЛК 150. Экспериментирую и осваиваю CoDeSys.

    Прочитал:


    Сделал:
    http://www.owen.ru/forum/attachment....1&d=1363171181

    Собственно вопрос: А что я сделал не так?
    Преобразование "REAL_TO_DWORD" очевидно, но непонятно зачем.

    Вдогонку:
    В списке адрес %QD7.0, а на панели "Базовые параметры" - %QB7
    Вопрос 2: Чем чревато отличие в одной букве?
    Изображения Изображения
    Последний раз редактировалось Асутупист; 13.03.2013 в 14:03.

  3. #3
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Преобразование "REAL_TO_DWORD" очевидно, но непонятно зачем.
    Аккуратнее с такими «очевидностями».

    Согласно руководству, вторая буква (D) это дескриптор размера, а не типа. И по такому определению на адрес %QD должны приниматься любые 32-битные значения, в том числе с плавающей запятой. Тем не менее, компилятор при обращении вот так по адресу допускает только целочисленные. То бишь баг или в руководстве, или в компиляторе.

    Преобразование REAL_TO_DWORD здесь неуместно, т.к. дробная часть будет отброшена. Рекомендую избегать прямого обращения к таким адресам и присваивать имена в окне конфигурации.

  4. #4

    По умолчанию

    Спасибо.
    Потерю дробной части наблюдал воочию.

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    ...вторая буква (D) это дескриптор размера, а не типа....
    +100500
    Самые главные слова

  6. #6
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Аккуратнее с такими «очевидностями».
    Да... уж. Я, например, ошарашен тем, что к DINT компилятор в упор не хочет применять побитовые логические операции. Потом вычитал, что таки да, нужен BYTE, WORD, DWORD. И делаю тупое присваивание dw := di, чтобы потом покрутить полученное двойное слово.
    С другой стороны, такая строгость системы иногда и спасает таких как я, читающих мануалы в последнюю очередь

  7. #7
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    ошарашен тем, что к DINT компилятор в упор не хочет применять побитовые логические операции
    То же самое с INT и SINT. Потому что негоже биты в знаковых типах дёргать. Где вам это понадобилось вообще?

  8. #8
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Где вам это понадобилось вообще?
    Да просто выделить младшее слово, например. Я, к примеру, забрасываю DINT куда-то по словам.
    Кроме того, бывают ситуации, когда просто однотипные операции делаю с разными типами. А разница между DWORD и DINT для переменных, которые по смыслу не бывают отрицательными - нулевая. Вот и бывает, что объявляю переменную DINT (за кумпанию с другими), а она, ну, может быть от 0 до 999999999. Пофиг, будет ли DWORD или DINT, так ведь? И вдруг выделить из нее некое поле операцией AND - низзя!
    Конечно, все решаемо. Я не жалуюсь. Я просто ответил на вопрос.

  9. #9
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Да просто выделить младшее слово, например. Я, к примеру, забрасываю DINT куда-то по словам.
    Кроме того, бывают ситуации, когда просто однотипные операции делаю с разными типами. А разница между DWORD и DINT для переменных, которые по смыслу не бывают отрицательными - нулевая. Вот и бывает, что объявляю переменную DINT (за кумпанию с другими), а она, ну, может быть от 0 до 999999999. Пофиг, будет ли DWORD или DINT, так ведь? И вдруг выделить из нее некое поле операцией AND - низзя!
    Конечно, все решаемо. Я не жалуюсь. Я просто ответил на вопрос.
    Точно ни чего не путаете, а тогда зачем существует тип переменной UDINT если знака нет?

  10. #10
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    тогда зачем существует тип переменной UDINT если знака нет?
    А зачем? Я в упор не вижу ни малейшей разницы в обработке 32-разрядного слова, если его старший разряд не есть знаковый. Покажите мне хоть одну операцию, в которой проц должен поступить неодинаково для типов DWORD и Вашего DUINT - и я все прощу

Страница 27 из 36 ПерваяПервая ... 172526272829 ... ПоследняяПоследняя

Ваши права

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