Показано с 1 по 9 из 9

Тема: СП307 float в макросах

  1. #1

    По умолчанию СП307 float в макросах

    Доброго времени суток. Немного запутался. Делаю макрос для панели СП307, который будет сигнализировать о выходе температуры за границы. Нигде не могу найти более подробное чем в РЭ описание приемов работы с DWORD и float в ANSI C. Получаю данные в панель с ПВТ110 в виде DWORD в регистры PSW260 и PSW261. Дальше мне в макросе нужно сравнить это значение с контрольным.

    что-то типа

    float t629;
    t629=???????????????????????
    if (t629>=24.0 && t629<=24.5)
    {SetPSB(260);
    ResetPSB(261);
    }
    else if (t629>24.5)
    {ResetPSB(260);
    SetPSB(261);
    }
    else
    {ResetPSB(260);
    ResetPSB(261);
    }

    Для этого мне DWORDы нужно превратить во float. Обратный пример разобран в РЭ. А тут как быть?

    Спасибо заранее.

  2. #2

    По умолчанию

    Не понял! Что Вы хотите?
    VirtualBox_CoDeSys v 2.3_14_06_2024_17_10_35.png

  3. #3

    По умолчанию

    Проблема в синтаксисе)) Вот так нужно?

    float t629;
    t629=*(float*)&(PSW[260],PSW[261]);
    if (t629>=24.0 && t629<=24.5)
    {SetPSB(260);
    ResetPSB(262);
    }
    else if (t629>24.5)
    {ResetPSB(260);
    SetPSB(262);
    }
    else
    {ResetPSB(260);
    ResetPSB(262);
    }

  4. #4

    По умолчанию

    А так:
    float t629;
    DWORD dwVal;
    dwVal = MAKEDWORD(PSW[260],PSW[261]);
    t629 = DWord_2_Float(dwVal);
    Последний раз редактировалось EFrol; 14.06.2024 в 17:43.

  5. #5

    По умолчанию

    Что за ерунда, в ПВТ100, температура и влажность передаётся двумя 16 битными целочисленными в соседних регистрах. Откуда вы DWORD выкопали ?

    Целочисленную тоже можно отобразить в панели как число с запятой, сместив точку на нужное количество знаков.
    Перевести во Float, можно с помощью ФО, выбрав Математику и разделив регистр с целочисленной, например на 10.0.
    Последний раз редактировалось kondor3000; 14.06.2024 в 18:26.

  6. #6

    По умолчанию

    Сходу не взлетело, но общий вектор понятен. Спасибо, копаю дальше. По крайней мере компилятор заткнулся со своими ошибками.

  7. #7

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Что за ерунда, в ПВТ100, температура и влажность передаётся двумя 16 битными целочисленными в соседних регистрах. Откуда вы DWORD выкопали ?

    Целочисленную тоже можно отобразить в панели как число с запятой, сместив точку на нужное количество знаков.
    У меня ПВТ110, я вроде в первом посте писал... Где там у него целые?

  8. #8

    По умолчанию

    Цитата Сообщение от Lexx225 Посмотреть сообщение
    У меня ПВТ110, я вроде в первом посте писал... Где там у него целые?
    Если у вас ПВТ110, то там читается сразу Float32, ставите в настройках дисплея DWORD и Float. 1 Чтение с ПВТ110.jpg
    А сравнить с уставкой можно с помощью графических макросов от petera. Они работают даже в эмуляции и отладить проще. Макросы вообще не нужны.
    Последний раз редактировалось kondor3000; 14.06.2024 в 18:23.

  9. #9

    По умолчанию

    С отображением все нормально с самого начала было, да и этот макрос в итоге я добил, все заработало. Мне описывать это для квалификации проще, если я использую только средства самой панели.

    Спасибо все равно)))))

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 13.04.2022, 19:00
  2. struct alignment в макросах
    от andemeno в разделе Панели оператора (HMI)
    Ответов: 21
    Последнее сообщение: 02.11.2021, 23:18
  3. иероглифы в макросах
    от evg3798 в разделе Панели оператора (HMI)
    Ответов: 1
    Последнее сообщение: 28.04.2017, 08:13
  4. ВЕЩЕСТВЕННЫЕ ЭЛЕМЕНТЫ В МАКРОСАХ
    от rovki в разделе Среда программирования OWEN Logic
    Ответов: 6
    Последнее сообщение: 18.04.2016, 16:53
  5. Переход от float (Nullable) к просто float
    от ASo в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 12.11.2014, 14:21

Ваши права

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