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

Тема: О неподдериваемых типах данных

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

    По умолчанию

    Цитата Сообщение от Borserg Посмотреть сообщение
    ...
    1. Мастер - целочисленная 32 бит, слейв - целочисленная с резервом следующего регистра. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 5132 вместо реального 3092.

    2. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 1168138240 вместо реального 3092.

    3. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
    В СП3хх - DWord, Float, 10 знаков.
    Получили 5132 вместо реального 3092.

    4. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Float, 10 знаков.
    Получили 0 вместо реального 3092.

    5. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 5132 вместо реального 3092...
    А чего не так ? Всё норм. Так и должно быть.

    Ну кроме того что не показали все настройки для мастера в 1-м,
    Напутали между 2-ым и 3-им. //Выкладываемые данные перепроверяйте 2 раза.
    Непонятно что иного ожидали от 4-ого. Вообще всё как в аптеке.
    А для 5-ого привели фейк.

    Проекты-то - где ? Оба естественно.

  2. #22

    По умолчанию

    Цитата Сообщение от Borserg Посмотреть сообщение
    Коллеги, попробовал варианты:

    1. Мастер - целочисленная 32 бит, слейв - целочисленная с резервом следующего регистра. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 5132 вместо реального 3092.

    2. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 1168138240 вместо реального 3092.

    3. Мастер - целочисленная 32 бит, слейв - с плавающей запятой. Мастер копируем в слейв через x->F.
    В СП3хх - DWord, Float, 10 знаков.
    Получили 5132 вместо реального 3092.

    4. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Float, 10 знаков.
    Получили 0 вместо реального 3092.

    5. Мастер - с плавающей запятой, слейв - с плавающей запятой. Мастер копируем в слейв напрямую.
    В СП3хх - DWord, Unsigned, 10 знаков.
    Получили 5132 вместо реального 3092.

    Положительный вариант:

    - в мастере две целочисленных переменных 16 бит - старший и младший регистры 32-битного значения
    - копирование этих регистров в две целочисленных 16 бит переменных слейва
    - копирование двух регистров слейва в два внутренних регистра PSW СП3хх
    - отображение на дисплее СП3хх переменной типа DWord Unsigned с младшего адреса PSW

    Личное мнение:
    Возможность создания целочисленных локальных и сетевых мастер переменных 32 бит и невозможность создания таких слейв переменных - очень большая недоработка OL.
    5132 это результат перестановки слов в DWORD для значения 3092. Измените порядок слов в ПР.

  3. #23
    Пользователь Аватар для Borserg
    Регистрация
    06.05.2015
    Адрес
    Санкт-Петербург
    Сообщений
    148

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Мне вот кажется 4-й вариант самый простой, а в панели указать, что это мол 32 битная целочисленная переменная и всё! Только порядок чередования байт придётся подобрать! Это если у Вас изначально такая переменная, а модбасу без разницы, что это, он два регистра передал, всё, дальше не его проблемы!
    Вот зачем Вы панели говорите, что это переменная с плавающей запятой(в этом 4-ом варианте), если утверждаете что изначально это 32 битная целочисленная переменная, это загадка тысячелетия, я тут всё, опускаю руки! Разве так бывает, самому себе противоречить! Здесь разумные объяснения неуместны!
    Вот 5-ый вариант более правильный, в смысле, насколько понял у вас изначально целочисленный беззнаковый тип данных, если Вам верить, какой на самом деле не известно!
    Так 5-й вариант и есть то, что Вы советуете.
    Я просто перебирал все возможные варианты и себе не противоречу.
    Тип данных действительно беззнаковый целый 32 бит (UDINT).
    Если эту переменную из устройства читать прямо в ПР3хх, указав в свойствах дисплея DWord, Unsigned, значение отображается корректно.

    Что касается порядка чередования байт, то его нельзя указать для отдельной переменной.
    А там есть еще переменные INT и UINT, которые передаются корректно.
    Кстати, переменные INT (целочисленное со знаком) отображаются в ПР3хх (и положительные и отрицательные) корректно без всяких преобразований на стороне ПР200.
    Достаточно в свойствах дисплея выбрать Word, Dec.

  4. #24
    Пользователь Аватар для Borserg
    Регистрация
    06.05.2015
    Адрес
    Санкт-Петербург
    Сообщений
    148

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    5132 это результат перестановки слов в DWORD для значения 3092. Измените порядок слов в ПР.
    Порядок слов изменить не могу, т. к. в ПР хранятся еще переменные INT и UINT, которые передаются в СП3хх корректно.

  5. #25

    По умолчанию

    Цитата Сообщение от Borserg Посмотреть сообщение
    Порядок слов изменить не могу, т. к. в ПР хранятся еще переменные INT и UINT, которые передаются в СП3хх корректно.
    Настройка "Старшим регистром вперёд" не может повлиять на INT и UINT, которые передаются в ОДНОМ регистре.

  6. #26
    Пользователь Аватар для Borserg
    Регистрация
    06.05.2015
    Адрес
    Санкт-Петербург
    Сообщений
    148

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Проекты-то - где ? Оба естественно.
    Вот проекты. Их содержимое соответствует обсуждаемому вопросу.
    Вложения Вложения

  7. #27

    По умолчанию

    Цитата Сообщение от Borserg Посмотреть сообщение
    Вот проекты. Их содержимое соответствует обсуждаемому вопросу.
    Вот так принимается и передаётся 32 битная целочисленная переменная из ПР и в ПР.
    В виде двух 16 битных слов. У вас будут адреса 513 и 514 1 Передача 32 бит перем.jpg
    В панели принимаете как DWORD с адресом 513.
    При неправильном отображении поменять местами старший и младший регистр.
    Последний раз редактировалось kondor3000; 08.12.2022 в 09:42.

  8. #28
    Пользователь Аватар для Borserg
    Регистрация
    06.05.2015
    Адрес
    Санкт-Петербург
    Сообщений
    148

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Настройка "Старшим регистром вперёд" не может повлиять на INT и UINT, которые передаются в ОДНОМ регистре.
    С этим согласен.

    Вот только если в 3 092 поменять местами регистры, получится 202 637 312.

    3092.png
    3092 Перестановка регистров.png

    А если байты, то получится 5 132.

    3092 Перестановка байт.png

    А перестановка байт уже затронет INT и UINT.

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

    По умолчанию

    Borserg вы там сильно не переставляйте когда вы считываете из ПР, положение галочек в настройке не действует, передача идет если байтами смотреть 3412, соответственно этому и надо подсунуть в сетевую переменную свое значение

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

  10. #30

    По умолчанию

    Опять развели бодягу на 3 страницы, ответ дан уже три раза, со скринами и примерами, на 1 на 2 и на 3 странице. На форуме обсуждалось 100 раз уже.

    И зачем ТС 32 битное целочисленное как Float принимает и передаёт? Вообще ни в какие ворота.
    Последний раз редактировалось kondor3000; 08.12.2022 в 10:24.

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

Похожие темы

  1. Ответов: 21
    Последнее сообщение: 01.07.2022, 06:36
  2. Вод данных в СПК
    от alexx12 в разделе СПК1хх
    Ответов: 3
    Последнее сообщение: 17.12.2018, 09:19
  3. Передача данных СПК107 на СМИ-1. Тип данных REAL.
    от ByuT в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 23.01.2016, 23:35
  4. Выгрузка данных 110-60м
    от STARIY в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 12.11.2015, 20:22
  5. Ответов: 19
    Последнее сообщение: 21.03.2013, 08:41

Ваши права

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