Страница 1102 из 1178 ПерваяПервая ... 1026021002105210921100110111021103110411121152 ... ПоследняяПоследняя
Показано с 11,011 по 11,020 из 11771

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #11011

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Т..к. в ваших слейвах порядок 3412, просто скопируйте из стринга исходную массив/структуру в нужное место и переставьте там слова в нужных двойных словах
    Я это понимаю, если не трудно подскажите нужную библиотеку или пример. Библиотека UTIL вроде только с битами работает, не хотелось бы до битовых данных опускаться, а работать хотя бы с байтами.

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

    По умолчанию

    Цитата Сообщение от Dmitry_KV Посмотреть сообщение
    Я это понимаю, если не трудно подскажите нужную библиотеку или пример. Библиотека UTIL вроде только с битами работает, не хотелось бы до битовых данных опускаться, а работать хотя бы с байтами.
    Выложите проект и карту регистров этой ловаты

  3. #11013

    По умолчанию

    Цитата Сообщение от Dmitry_KV Посмотреть сообщение
    Я это понимаю, если не трудно подскажите нужную библиотеку или пример. Библиотека UTIL вроде только с битами работает, не хотелось бы до битовых данных опускаться, а работать хотя бы с байтами.
    Самое простое создать функцию и переставить регистры 1 Перестановка регистров.jpg
    Код:
    FUNCTION SW_DWORD : DWORD
    VAR_INPUT
    	DW :DWORD;  (*полученный DWORD *)
    END_VAR
    ________________________________
    SW_DWORD := ROL(DW, 16);   (* Выход с переставленными регистрами*)
    Последний раз редактировалось kondor3000; 30.09.2024 в 10:44.

  4. #11014
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    ))
    Еще проще создать функцию и переставить как хочешь и сразу всей структуре/массиве
    Код:
    FUNCTION SwapOrder : BOOL (*неисп*)
    VAR_INPUT
      PStruct	: DWORD; (*pointer to struct..*)
      SzStruct	: DWORD; (*для кратного 4*)
      Order		: WORD; (*2143,3412,4321. Всё остальное как 1234 и не трогается*)
    END_VAR
    ---------------------------------------
    CASE Order OF 2143,3412:
      SysMemSwap(PStruct, 2, SzStruct / 2);
    END_CASE
    
    CASE Order OF 3412,4321:
      SysMemSwap(PStruct, 4, SzStruct / 4);
    END_CASE
    Код:
    Куда-то_в_слейв AT %где_то_в_слейве : ARRAY[..] of / STRUCT / ...
    Order : WORD := 3412; (*для поиграть*)
    ---------------------------------------
    SysMemCpy(ADR(Куда-то_в_слейв), ADR(Откуда-то_из_мастера), SIZEOF(Куда-то_в_слейв));
    SwapOrder(ADR(Куда-то_в_слейв), SIZEOF(Куда-то_в_слейв), Order);
    Иногда проще скомпоновать перенос с перестановкой в один футляр

  5. #11015

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Самое простое создать функцию и переставить регистры
    Спасибо, сейчас попробую.

    Цитата Сообщение от Валенок Посмотреть сообщение
    ))
    Еще проще создать функцию и переставить как хочешь и сразу всей структуре/массиве
    Иногда проще скомпоновать перенос с перестановкой в один футляр
    Не до конца понятно, но очень интересно. Похоже это то, что требовалось в самом начале... Спасибо, буду пытать

  6. #11016
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от Dmitry_KV Посмотреть сообщение
    Не до конца понятно,..
    см. п#11012

  7. #11017

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Выложите проект и карту регистров этой ловаты
    В принципе меня устроило как работает предложенное уважаемым kondor3000, но этот вариант тоже может пригодиться в будущем.
    Код:
    Адресс	Наименование
    1	Напряжение_AN
    3	Напряжение_BN
    5	Напряжение_CN
    7	Напряжение_LN_Avg
    15	Напряжение_LL_ср
    17	Текущий_ток_А
    19	Текущий_ток_В
    21	Текущий_ток_С
    25	Полная_активная_мощность
    27	Полная_реактивная_мощность
    29	Полная_общая_мощность
    33	Доставленная_активная_энергия
    37	Доставленная_реактивная_энергия
    41	Активная_мощность_А
    43	Активная_мощность_В
    45	Активная_мощность_С
    47	Реактивная_мощность_А
    49	Реактивная_мощность_В
    51	Реактивная_мощность_С
    53	Полная_мощность_А
    55	Полная_мощность_В
    57	Полная_мощность_С
    71	Частота
    511	Дисбаланс_напряжения
    513	Дисбаланс_тока
    Вложения Вложения

  8. #11018
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Почему с нечетных если на стр. 10 с четных?
    Чем @150 отличается от @144,146,148?
    Последний раз редактировалось Валенок; 01.10.2024 в 09:26.

  9. #11019

    По умолчанию

    Почему у вас адреса начинаются с первого, когда по мануалу, адреса начинаются со 2.
    У вас в итоге и регистры переставлены и читаете вы регистры из разных каналов. Если я прав, то переставлять регистры надо при обычном чтении, а через String и переставлять ничего не надо.

    По мануалу функция должна быть 4, а вы всё читаете 3
    Последний раз редактировалось kondor3000; 01.10.2024 в 10:36.

  10. #11020

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    По мануалу функция должна быть 4, а вы всё читаете 3
    Вот это ошибка... из других счетчиков перекочевала.
    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Почему у вас адреса начинаются с первого, когда по мануалу, адреса начинаются со 2.
    У вас в итоге и регистры переставлены и читаете вы регистры из разных каналов. Если я прав, то переставлять регистры надо при обычном чтении, а через String и переставлять ничего не надо.
    Цитата Сообщение от Валенок Посмотреть сообщение
    Почему с нечетных если на стр. 10 с четных?
    При функции 3 смещение на 1 регистр, если ставить как в мануале то вообще ничего не читает, сразу в ошибку вываливается. Сейчас перепроверил, при нужной функции чтения 4, без разницы с какого регистра начинать чтение, но поправил на четный как в мануале. Цифры одинаковые считывает! Преобразование все равно нужно
    Т.к. ПЛК считывает одинаковые цифры со смещением и без, проверил как все считается в arOPC напрямую со счетчика. В OPC сервере необходимо смещение, т.е. начало с 1 регистра а не со 2 как в мануале. С четного опрос не идет.
    Цитата Сообщение от Валенок Посмотреть сообщение
    Чем @150 отличается от @144,146,148?
    К мультиметру @150 есть доступ и там живые данные, у @144,146,148 все по нулям чтобы подать на них напряжение надо включать установку.
    Последний раз редактировалось Dmitry_KV; 01.10.2024 в 12:56.

Страница 1102 из 1178 ПерваяПервая ... 1026021002105210921100110111021103110411121152 ... ПоследняяПоследняя

Метки этой темы

Ваши права

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