- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Обмен байтами внутри REAL
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 53
- Зарегистрирован: 05 июл 2011, 16:03
- Имя: Леонов Александр Сергеевич
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Обмен байтами внутри REAL
Здравствуйте!
Недавно начал осваивать TIA Portal V13 вместо уже почти родного Step 7 V5.5.
Многое непривычно и непонятно.
Возникла проблема - в общих блоках данных не прописывается смещение переменных. В экземплярных блоках данных прописывается,а тут нет. Раньше я, зная точный адрес переменных с плавающей точкой внутри блока данных, мог поменять у них старшее слово с младшим (это нужно для связи с панелью оператора). А теперь фиг. Возможно, есть какая-то хитрая настройка, которая показывает смещение в общих блоках данных?
Впрочем, скорее всего, эта задача имеет другое решение, более человеческое.
В кодезисе я подобную задачу решал через указатели и циклический сдвиг.
А тут попал в тупик.
Подскажите, пожалуйста, как в TIA Portal легче всего поменять старшее и младшее слова местами внутри переменной типа REAL.
Недавно начал осваивать TIA Portal V13 вместо уже почти родного Step 7 V5.5.
Многое непривычно и непонятно.
Возникла проблема - в общих блоках данных не прописывается смещение переменных. В экземплярных блоках данных прописывается,а тут нет. Раньше я, зная точный адрес переменных с плавающей точкой внутри блока данных, мог поменять у них старшее слово с младшим (это нужно для связи с панелью оператора). А теперь фиг. Возможно, есть какая-то хитрая настройка, которая показывает смещение в общих блоках данных?
Впрочем, скорее всего, эта задача имеет другое решение, более человеческое.
В кодезисе я подобную задачу решал через указатели и циклический сдвиг.
А тут попал в тупик.
Подскажите, пожалуйста, как в TIA Portal легче всего поменять старшее и младшее слова местами внутри переменной типа REAL.
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 19 раз
- Поблагодарили: 64 раза
Обмен байтами внутри REAL
Попробуйте использовать неоптимизированные блоки данных, в TIA для контроллеров новых серий, емнип, по умолчанию блок данных определяется как оптимизированный, т.е. у каждой переменной динамический адрес, доступ к переменным - через их имя.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Обмен байтами внутри REAL
Используй функцию SWAP для обмена байтов. По возможности не используй устаревшую технологию со смещением, но если что, там галочка в свойствах датаблоков убирается...
-
- здесь недавно
- Сообщения: 53
- Зарегистрирован: 05 июл 2011, 16:03
- Имя: Леонов Александр Сергеевич
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Обмен байтами внутри REAL
По поводу функции SWAP. Меня очень смутило, что в качестве входных переменных в хелпе указаны типы DWORD и WORD, а мне требуется поменять байты внутри REAL.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Обмен байтами внутри REAL
меня смущает своп, который надо сделать внутри REAL... Обычно системы разных архитектур обмениваются через целочисленные типы данных.
-
- освоился
- Сообщения: 248
- Зарегистрирован: 31 янв 2017, 08:44
- Имя: Маркушин Андрей Геннадьевич
- Страна: Россия
- город/регион: Нижегородская обл., Выкса
- Благодарил (а): 19 раз
- Поблагодарили: 64 раза
Обмен байтами внутри REAL
А в TIA инструкции CAD больше нет? Для S7-300-400 должна быть, ей и приводил данные REAL из мотороловского формата к интеловскому.
-
- здесь недавно
- Сообщения: 53
- Зарегистрирован: 05 июл 2011, 16:03
- Имя: Леонов Александр Сергеевич
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Обмен байтами внутри REAL
Опять же, судя по хелпу, команда CAD меняет байты с ABCD на DCBA. А надо ABCD на CDAB. Хотя, в комбинации с командой CAW должно сработать.
-
- здесь недавно
- Сообщения: 53
- Зарегистрирован: 05 июл 2011, 16:03
- Имя: Леонов Александр Сергеевич
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 2 раза
- Поблагодарили: 2 раза
Обмен байтами внутри REAL
Попробовал последний вариант с комбинацией команд CAW и CAD:
L #X_Direct
CAW
T #Internal_1
L #Internal_1
CAD
T #Internal_2
L #Internal_2
CAW
T #Z_Real
Все переменные типа Real. В итоге получил то, что хотел: ABCD CDAB.
Всем спасибо за помощь
L #X_Direct
CAW
T #Internal_1
L #Internal_1
CAD
T #Internal_2
L #Internal_2
CAW
T #Z_Real
Все переменные типа Real. В итоге получил то, что хотел: ABCD CDAB.
Всем спасибо за помощь