Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 41

Тема: DWORD_TO_REAL

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

    По умолчанию

    Цитата Сообщение от @ND Посмотреть сообщение
    Я пользуюсь.
    Особенно когда много приходится работать с коммуникациями.
    Удобно биты выделять, байты переворачивать и прочее.

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

    А приходится писать костыль на указателях.
    Не люблю начинать знакомство с костылей.
    коммуникациями какими? put и get, так там указателями на структуру можно, а в ней в структуре что угодно, необязательно ворды
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #22

    По умолчанию

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

  3. #23

    По умолчанию

    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.

  4. #24

    По умолчанию

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

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

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

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

    По умолчанию

    Цитата Сообщение от @ND Посмотреть сообщение
    Ну остальные участники форума то поняли, зачем так цепляться?
    кто понял, я где то написал, скорее наоборот всё хотел узнать зачем Вам дворд, вялая отмазка про модбас не прокатит, тамслова используются а ни как не двойные, это Вы сами потом из них лепите двойное слово чтоб в реал перевести
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  6. #26

    По умолчанию

    На счёт понимания:
    Валенку не понравилось что я за вместо слова "интерпретировать" слово "перевести" использовал. Согласен, не точно выразился. Но ведь по смыслу то, меня ведь правильно поняли, что мне нужна интерпретация 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.

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

    По умолчанию

    Цитата Сообщение от @ND Посмотреть сообщение
    Ну REAL занимает 4 байта, значение REAL можно интерпретировать, указав на на DWORD, или на два WORDа, или четыре байта, или 32 бита. Просто я выбрал одновесные типы вот и всё.
    почему сразу не реал?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  8. #28

    По умолчанию

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

    Или может быть я не правильно понял. Как это сразу REAL ?
    Предложите пример.
    Последний раз редактировалось @ND; 07.08.2015 в 16:51.

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

    По умолчанию

    Цитата Сообщение от @ND Посмотреть сообщение
    Ну в один момент времени там реал лежит, а в другой там может вообще какие нибудь дискретные сигналы лежат. Особенно если устройств опроса несколько или когда количество и качество запросов может меняться со временем.

    Или может быть я не правильно понял. Как это сразу REAL ?
    Предложите пример.
    для какой среды? Для степа, так зачем изначально размещать в ДБшке двойное слово, когда можно реал и даже преобразовывать ничего не надо, для КДС3 - мне что то не попадалось где там в канальной части попадаются дворды, там только слова, для КДС2 - существует конфигуратор в котором сразу в мастере и вставляется нужный модуль - реал
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  10. #30

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    для какой среды? Для степа, так зачем изначально размещать в ДБшке двойное слово, когда можно реал и даже преобразовывать ничего не надо, для КДС3 - мне что то не попадалось где там в канальной части попадаются дворды, там только слова, для КДС2 - существует конфигуратор в котором сразу в мастере и вставляется нужный модуль - реал
    А если мне нужно будет порядок байт для REALа поменять или на коэффициент умножить?
    А считывать мне нужно одной большой телеграммой, в которой есть как использующиеся данные так и нет и лежать они могут там с разрывами.
    Так же производители устройств с поддержкой MODBUS протокола могут разместить realы таким образом, что они будут отстоять друг от друга скажем на один байт, тогда у вас вообще не получится их прописать как реалы.

    Вот к примеру программа для одного соединения в STEP7
    Вложения Вложения
    • Тип файла: txt CON_1.txt (29.0 Кб, Просмотров: 26)
    Последний раз редактировалось @ND; 07.08.2015 в 17:39.

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя

Ваши права

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