Страница 161 из 166 ПерваяПервая ... 61111151159160161162163 ... ПоследняяПоследняя
Показано с 1,601 по 1,610 из 1653

Тема: OwenCloud. Что это и с чем его едят?

  1. #1601

    По умолчанию

    У ПРки - да, а я спрашивал со стороны OwenCloud: может он по Команде записать бит, а не весь регистр, например.
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  2. #1602
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,977

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    У ПРки - да, а я спрашивал со стороны OwenCloud: может он по Команде записать бит, а не весь регистр, например.
    Есть же руководство пользователя, там на стр.33 написано:

    Функции записи и типы данных облака.png

    В смысле, если Вы не верите, что там написано, тогда всё нужно проверять опытным путём!

    rp_owencloud.pdf
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  3. #1603

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Можно попросить подсказки?
    Я работаю с ПР200, и мне не хватит Slave-регистров, как и всем остальным.

    1. Я знаю, что OwenCloud может разбирать регистр по битам.
    У меня будет передача всяких статусов, битовых, типа "Протечка воды", "Свет включен", "Питание подано" и так далее.
    Как правильно делать, чтобы выгрузить проект из ПРки в OwenCloud с такой битовой маской?
    Надо будет добавить в OwenCloud такой регистр несколько раз, указав разные биты?
    У нас есть функция дублирования регистра (если нет - я могу руками всё сделать)?

    2. Можно ли по аналогии сделать запись битовых команд в ПРку через один регистр?
    Идея точно такая же, как и на чтение: один бит - выключить питание, другой - погасить свет, третий - сбросить аварию протечек.
    Можно ли в OwenCloud добавить на запись такие биты из одно регистра?
    Как это сделать?

    3. Нормальной ли практикой будет, если я вместо FLOAT32 буду передавать параметры в SIGNED INT16 и делить их на 100, например?
    Мне надо передавать температуры (улица) от ну пусть -40 до +60 градусов. Хватит тут одного регистра WORD?
    Как правильно такое описать в OwenCloud и OwenLogic?

    Спасибо, если кто подскажет.
    Вот так выглядит настройка битового тега в Cloud:
    Снимок экрана 2024-07-10 083211.png
    Управление битами - аналогично, только разрешение на запись нужно.

    Есть МНОЖИТЕЛЬ, наверное должен работать:
    изображение_2024-07-10_083504475.png
    Но в OL придётся умножать float на 100 и использовать функцию перевода в int (чтобы передавать отрицательные значения)

    Код:
    function REAL_TO_INT : udint; 
        var_input 
            rIn : real; 
        end_var
        
        var //
            udTmp : udint;
        end_var
        
        IF rIn < -32768 THEN rIn := -32768;
        ELSIF rIn > 32767 THEN rIn := 32767;
        END_IF;
        
        udTmp :=  real_to_udint(abs(rIn));
        IF rIn > -1 THEN REAL_TO_INT := udTmp;
        ELSE REAL_TO_INT := 65536 - udTmp;
        END_IF;
        
    end_function
    Последний раз редактировалось 1exan; 10.07.2024 в 05:05.

  4. #1604
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,977

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Вот так выглядит настройка битового тега в Cloud:
    изображение_2024-07-10_083504475.png
    Управление битами - аналогично, только разрешение на запись нужно.

    Есть МНОЖИТЕЛЬ, наверное должен работать:
    изображение_2024-07-10_083504475.png
    Но в OL придётся умножать float на 100 и использовать функцию перевода в int (чтобы передавать отрицательные значения)

    Код:
    function REAL_TO_INT : udint; 
        var_input 
            rIn : real; 
        end_var
        
        var //
            udTmp : udint;
        end_var
        
        IF rIn < -32768 THEN rIn := -32768;
        ELSIF rIn > 32767 THEN rIn := 32767;
        END_IF;
        
        udTmp :=  real_to_udint(abs(rIn));
        IF rIn > -1 THEN REAL_TO_INT := udTmp;
        ELSE REAL_TO_INT := 65536 - udTmp;
        END_IF;
        
    end_function
    Так он писать хочет биты в регистры ПР, а не читать, в смысле, ваши настройки для чтения, они не подойдут в данном конкретном случае!

    И, макросы преобразования уже имеются, здесь в посте#83 в последний раз выкладывал универсальные, в смысле, для INT и DINT:
    https://owen.ru/forum/showthread.php?t=39392&page=9
    А здесь обсуждали:
    https://owen.ru/forum/showthread.php?t=9398&page=647
    Последний раз редактировалось Сергей0308; 10.07.2024 в 05:56.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  5. #1605

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Так он писать хочет биты в регистры ПР, а не читать, в смысле, ваши настройки для чтения, они не подойдут в данном конкретном случае!
    Да, что-то первый скрин не тот прицепился

  6. #1606

    По умолчанию

    Спасибо (ссылки себе копирую)!
    Так. Примерно ясно:
    1. Читать биты можно.
    2. Передавать FLOAT в INT можно с множителем (на 0,01 - отлично).
    3. С заприсью бит надо пробовать. У меня ж это всё на квартире матери работает, я пока не могу поехать туда, всё сломать, и тестировать.
    Хотел заранее продумать карту регистров...
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

  7. #1607

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Спасибо (ссылки себе копирую)!
    Так. Примерно ясно:
    1. Читать биты можно.
    2. Передавать FLOAT в INT можно с множителем (на 0,01 - отлично).
    3. С заприсью бит надо пробовать. У меня ж это всё на квартире матери работает, я пока не могу поехать туда, всё сломать, и тестировать.
    Хотел заранее продумать карту регистров...
    Запись бит с облака на ПР200 я пробовал - это точно можно сделать

  8. #1608
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,002

    По умолчанию

    Вроде petera показывал как читать и писать биты в ПР200. у вас регистр 512, умножаем на 16 и получаем адрес первого бита. Вроде что-то вроде этого.
    Если же оперировать регистром и самостоятельно получать биты типа через GetBit (или что-то аналогичное, что там есть в облаке, если есть), то при записи одного бита в регистр надо его изменить в данных самого регистра и отправить регистр целиком. Вот такое есть в облаке или нет даже не смотрел.

  9. #1609

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Код:
    function REAL_TO_INT : udint; 
        var_input 
            rIn : real; 
        end_var
        
        var //
            udTmp : udint;
        end_var
        
        IF rIn < -32768 THEN rIn := -32768;
        ELSIF rIn > 32767 THEN rIn := 32767;
        END_IF;
        
        udTmp :=  real_to_udint(abs(rIn));
        IF rIn > -1 THEN REAL_TO_INT := udTmp;
        ELSE REAL_TO_INT := 65536 - udTmp;
        END_IF;
        
    end_function
    Всё уже упростили давно, функция выглядит так https://owen.ru/forum/showthread.php...821#post429821
    Код:
    function FLOAT_TO_DINT: udint; //имя функции и тип данных выхода
        VAR_INPUT
          in : REAL;
        END_VAR
    
        if In >= 0 then
           FLOAT_TO_DINT := real_to_udint(In);
        else
         //   FLOAT_TO_INT:= 65536 - real_to_udint(-In);   // Для   INT
          FLOAT_TO_DINT:= 0 - real_to_udint(-In);     // Для   DINT
        end_if
       
    end_function
    Последний раз редактировалось kondor3000; 10.07.2024 в 09:09.

  10. #1610

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Всё уже упростили давно, функция выглядит так...
    Я всё же буду использовать чуть более сложный вариант, чтобы не получить ненароком подобных результатов:
    изображение_2024-07-10_131246505.png

Страница 161 из 166 ПерваяПервая ... 61111151159160161162163 ... ПоследняяПоследняя

Похожие темы

  1. Сетевой шлюз ПМ210 для доступа к сервису OwenCloud по GPRS
    от Евгений Багаев в разделе ПМ210
    Ответов: 460
    Последнее сообщение: 24.06.2023, 12:31
  2. mod_rssim, и с чем его едят?
    от Vitorgan в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 21.02.2022, 11:22

Ваши права

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