Страница 242 из 369 ПерваяПервая ... 142192232240241242243244252292342 ... ПоследняяПоследняя
Показано с 2,411 по 2,420 из 4097

Тема: Панели оператора СП3xx. Вопросы и ответы

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от stdenits Посмотреть сообщение
    Возможно я не так выразился или вы меня не поняли.

    Код:
    // в промежуточную переменную типа Float (tmp_val) заносим сумму или разность считанного значения типа DWord (temp_value) и дельты delta типа Int (в зависимости от знака дельты)
    // Здесь же преобразуем DWord (temp_value) в Float          
    tmp_val = (delta >= 0) ? (DWord_2_Float(temp_value) + delta) : (DWord_2_Float(temp_value) - (delta * -1)); 
    // заносим значение промежуточной переменной tmp_val в регистр, например, PSW300 (и 301) - который и отображается в дисплее с типом DWord и форматом Float
    *(float*)(PSW+300) = tmp_val;
    Всё вычисляется и отображается как надо, если delta положительная (допустим, 0, 10 или 30).
    Если delta отрицательная (например, -3) и надо вычислить разность - выводится фигня, типа 6.86+??.
    Начинаем сначала.
    Откуда дельта берётся? Почему она INT ?
    Как вы из переменной Float вычитаете INT, этот кусок (DWord_2_Float(temp_value) - (delta * -1)); и что у вас получится ?

  2. #2

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Начинаем сначала.
    Откуда дельта берётся? Почему она INT?
    Дельта вносится пользователем через элемент Ввод данных с типом Word и форматом Dec.
    Применили Int потому что для дельты, в нашем случае, достаточно только целых чисел.

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Как вы из переменной Float вычитаете INT, этот кусок (DWord_2_Float(temp_value) - (delta * -1)); и что у вас получится?
    А в чём заключается проблема для компилятора?

    1) преобразовали DWord в Float;
    2) если дельта отрицательная - умножаем дельту на -1, чтобы избавиться от знака - у дельты;
    3) вычитаем из п.1 дельту.

    Пробный код из Си компилятора.

    Если я ошибаюсь - поправьте, пожалуйста.

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

    По умолчанию

    Предлагаю прям в панели вывести в hex'e все 8 символов для PSW[300..301] и сюда их. Со всеми исходными.

    --
    И оба не сработали.
    Ну тогда явное-преявное:
    tmp_val=(float)temp_value + (float)delta;
    Последний раз редактировалось Валенок; 02.11.2022 в 15:57.

  4. #4

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    DWORD это 2 регистра, их и надо передавать. Если панель мастер, то для правильной передачи надо в конфигураторе панели в Настройках проекта/Устройство поставить галку поменять местами регистры.
    Галочка стоит. Хорошо, я правильно понимаю, что один PFW регистр мне нужно передать в два регистра ПРки? А потом их соединить в один?

  5. #5

    По умолчанию

    Цитата Сообщение от Flying Labrador Посмотреть сообщение
    Галочка стоит. Хорошо, я правильно понимаю, что один PFW регистр мне нужно передать в два регистра ПРки? А потом их соединить в один?
    Не написали самого главного, ваша переменная целочисленная или FLOAT?
    Для целочисленной:
    Одну переменную DWORD (2 регистра) с помощью функц. области скопировать из PFW в регистр 4х512, а в ПР слейве собрать переменную из двух регистров, на скрине 1 Пиём 32 бит переменной.jpg
    Для FLOAT, всё тоже самое, только в ПР вы ставите переменную FLOAT и уже собирать не надо, она и так 2 регистра.
    При неправильном отображении или снять (поставить) галку в панели или в ПР поменять местами старший и младший регистр.
    Последний раз редактировалось kondor3000; 03.11.2022 в 11:01.

  6. #6

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Не написали самого главного, ваша переменная целочисленная или FLOAT?
    Для целочисленной:
    Одну переменную DWORD (2 регистра) с помощью функц. области скопировать из PFW в регистр 4х512, а в ПР слейве собрать переменную из двух регистров, на скрине 1 Пиём 32 бит переменной.jpg
    Для FLOAT, всё тоже самое, только в ПР вы ставите переменную FLOAT и уже собирать не надо, она и так 2 регистра.
    При неправильном отображении или снять (поставить) галку в панели или в ПР поменять местами старший и младший регистр.
    Спасибо большое, попробую. Переменная — целочисленная

  7. #7

    По умолчанию

    Касательно моей проблемы.

    Дело было в приведении типов: элемент Ввод данных для переменной дельты имеет тип Word и формат Dec. Переменная, хранящая дельту, имеет тип Int. Решилось всё с помощью преобразования Word_2_Int16(x). Далее тип Float и Int можно нормально складывать и вычитать.
    Последний раз редактировалось stdenits; 06.11.2022 в 10:16.

  8. #8

    По умолчанию

    Здравствуйте. Осваиваю конфигуратор СП300. Пока не все понятно. Вопрос: я могу нарисовать линию трубопровод это или линия электрическая.. и менять ее цвет в зависимости от включения ну или открытия? Пока я такой возможности не обнаружил. С клапанами задвижками вроде разобрался а с линиями не могу.

  9. #9

    По умолчанию

    У меня тоже не получается!
    Но их можно перемещать, указывая регистр например по вертикали.
    Т.е. когда нужна первая, смещаю вторую за пределы экрана и наоборот.
    Изврат, конечно! Но по другому никак.

  10. #10
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    4,143

    По умолчанию

    Цитата Сообщение от Роман Анатольев Посмотреть сообщение
    Здравствуйте. Осваиваю конфигуратор СП300. Пока не все понятно. Вопрос: я могу нарисовать линию трубопровод это или линия электрическая.. и менять ее цвет в зависимости от включения ну или открытия? Пока я такой возможности не обнаружил. С клапанами задвижками вроде разобрался а с линиями не могу.
    Цитата Сообщение от EFrol Посмотреть сообщение
    У меня тоже не получается!
    Но их можно перемещать, указывая регистр например по вертикали.
    Т.е. когда нужна первая, смещаю вторую за пределы экрана и наоборот.
    Изврат, конечно! Но по другому никак.
    Ну зачем изврат?
    Просто используйте стандартную битовую лампу, задайте ей в качестве состояний ВКЛ и ВЫКЛ свои нарисованные разноцветные линии

    Или Вы не умеете пользоваться настройками стандартного индикатора?
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 242 из 369 ПерваяПервая ... 142192232240241242243244252292342 ... ПоследняяПоследняя

Похожие темы

  1. Экспорт CSV в панели СП3xx и порядок квитирования событий
    от theoretician в разделе Панели оператора (HMI)
    Ответов: 30
    Последнее сообщение: 24.08.2021, 16:17
  2. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  3. Сенсорные панели оператора ОВЕН СП3ХХ
    от Боднар Олег Миколайович в разделе Подбор Оборудования
    Ответов: 7
    Последнее сообщение: 17.12.2015, 09:09
  4. СПК 107 в качестве панели оператора
    от Леонид в разделе СПК1xx (архив)
    Ответов: 15
    Последнее сообщение: 20.11.2015, 08:17

Ваши права

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