Тогда у Сименса логичнее. В кодесисе бред, с которым придётся смириться через указатели.
Пометка на полях: из Кодесиса в Степ7 код не копипастить.
Тогда у Сименса логичнее. В кодесисе бред, с которым придётся смириться через указатели.
Пометка на полях: из Кодесиса в Степ7 код не копипастить.
Спасибо за своевременную помощь. Недооценил я указатели.
А на счёт DWORD_TO_REAL , разработчикам КДС минус.
Я пользуюсь.так если DWORD-ами никто не пользуется Вам то это зачем
Особенно когда много приходится работать с коммуникациями.
Удобно биты выделять, байты переворачивать и прочее.
Тут например я хотел сначала воспользоваться такой конструкцией:
DWORD_TO_REAL(ROL(%ID0, 16)) чтоб получить местный реал.
А приходится писать костыль на указателях.
Не люблю начинать знакомство с костылей.![]()
Последний раз редактировалось @ND; 07.08.2015 в 08:27.
Я имел в виду разбор телеграмм от различных устройств. (много приходится работать с протоколом модбас рту).
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.
В данном случае костылём является как раз UNION. ("Многабукв" за вместо одной строки)Ничего. Вы сами себе выбрали "костыли" (C)
Поиск по "DWORD_TO_REAL" никто не отменял. Результат 0 topic(s) found.Т.е. Вы утверждаете что прочитали весь хелп ?
Ну остальные участники форума то поняли, зачем так цепляться?Нет, непонятно что Вам нужно. Мелофон поломался
На счёт понимания:
Валенку не понравилось что я за вместо слова "интерпретировать" слово "перевести" использовал. Согласен, не точно выразился. Но ведь по смыслу то, меня ведь правильно поняли, что мне нужна интерпретация 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.