Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 34

Тема: DWORD_TO_REAL

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

    По умолчанию

    Тогда у Сименса логичнее. В кодесисе бред, с которым придётся смириться через указатели.

    Пометка на полях: из Кодесиса в Степ7 код не копипастить.

  2. #12

    По умолчанию

    Спасибо за своевременную помощь. Недооценил я указатели.
    А на счёт DWORD_TO_REAL , разработчикам КДС минус.

  3. #13

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Пометка на полях: из Кодесиса в Степ7 код не копипастить.
    Это уголовно наказуемо?
    Да и зачем. Там эта плюшка из коробки работает.

  4. #14

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    вроде бы логичнее, но тот кто в степе написал 105 (SCALE), вход почему то в интах завел
    Ну вообще то это логично подавать на вход число, характеризующую величину переменной процесса.
    Как раз не логичнее там было бы видеть ворд.

  5. #15

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    так если DWORD-ами никто не пользуется Вам то это зачем
    скале преобразует физ.аналоговый вход в реал, не такли, а он у них не в интах
    Тут немчура конечно отчудила. Ставя по умолчанию на физ вход ворд. Но его ни кто не запрещает поменять на инт, прямо там же в настройках модуля ввода.

  6. #16

    По умолчанию

    так если DWORD-ами никто не пользуется Вам то это зачем
    Я пользуюсь.
    Особенно когда много приходится работать с коммуникациями.
    Удобно биты выделять, байты переворачивать и прочее.

    Тут например я хотел сначала воспользоваться такой конструкцией:
    DWORD_TO_REAL(ROL(%ID0, 16)) чтоб получить местный реал.

    А приходится писать костыль на указателях.
    Не люблю начинать знакомство с костылей.
    Последний раз редактировалось @ND; 07.08.2015 в 08:27.

  7. #17

    По умолчанию

    Я имел в виду разбор телеграмм от различных устройств. (много приходится работать с протоколом модбас рту).

  8. #18

    По умолчанию

    1. Ну и что, что в документации есть Union. Dword_to_real то нет. То бишь документация не полная.

    2. Разницу между преобразованием и интерпретацией прекрасно понимаю, разве с самого начала не было понятно что мне нужно интерпретировать набор 4х байт в реал?

    3. String_to_real в Step7 вообще нет. Так же не понял на счёт убожества: интерпретировать реал из 4х байт предварительно поменяв два ворда в них коротенькой строкой - что тут плохого или убогого?

    4. UINT - числовой тип, DWORD - это не числовой тип. И я всегда привык работать с DWORD, как c не числовым типом. Потому то меня и выбило из колеи, когда DWORD_TO_REAL(16#1) дал мне 1.0

    5. В MODBUS RTU телеграммы - это набор байт. Если мне удобно для работы с этими байтами пользоваться различными бинарными операторами и интерпретировать с помощью DWORD_TO_REAL в случае STEP7, то почему бы и нет?
    Последний раз редактировалось @ND; 07.08.2015 в 13:22.

  9. #19

    По умолчанию

    Ничего. Вы сами себе выбрали "костыли" (C)
    В данном случае костылём является как раз UNION. ("Многабукв" за вместо одной строки)

    Т.е. Вы утверждаете что прочитали весь хелп ?
    Поиск по "DWORD_TO_REAL" никто не отменял. Результат 0 topic(s) found.

    Нет, непонятно что Вам нужно. Мелофон поломался
    Ну остальные участники форума то поняли, зачем так цепляться?

  10. #20

    По умолчанию

    На счёт понимания:
    Валенку не понравилось что я за вместо слова "интерпретировать" слово "перевести" использовал. Согласен, не точно выразился. Но ведь по смыслу то, меня ведь правильно поняли, что мне нужна интерпретация 4х байт в реале, и правильно предложили написать функцию с использованием указателей.

    всё хотел узнать зачем Вам дворд
    Ну REAL занимает 4 байта, значение REAL можно интерпретировать, указав на на DWORD, или на два WORDа, или четыре байта, или 32 бита. Просто я выбрал одновесные типы вот и всё.

    Пример из использования в Step7
    Когда телеграммам прилетает на порт, она ложится в определенный DBxxx, по определенному адресу.
    И если мне нужно интерпретировать REAL c 4х байт начиная с 200 адреса я пользовался следующей конструкцией:
    real_var := DWORD_TO_REAL(DBxxx.DBD200);

    int_var := WORD_TO_INT(DBxxx.DBW200); для интерпретации инта соотвтетственно.

    Коротко и удобно.
    Последний раз редактировалось @ND; 07.08.2015 в 16:50.

Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Ваши права

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