Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: Макрос суммарного расхода

  1. #1

    По умолчанию Макрос суммарного расхода

    Подскажите, как можно записать в макрос для панели СП310 формулу для расчета суммарного значения числа (расхода). В ПЛК это выглядит так:
    VAR
    tickTock: R_TRIG;
    END_VAR


    tickTock(CLK := TIME_TO_UDINT(TIME()) MOD 1000 > 500);


    IF tickTock.Q THEN
    a := a + QF1 / 3600;
    END_IF
    Заранее благодарен!!!

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

    По умолчанию

    Цитата Сообщение от arelavv Посмотреть сообщение
    Подскажите, как можно записать в макрос для панели СП310 формулу для расчета суммарного значения числа (расхода). В ПЛК это выглядит так:
    VAR
    tickTock: R_TRIG;
    END_VAR


    tickTock(CLK := TIME_TO_UDINT(TIME()) MOD 1000 > 500);


    IF tickTock.Q THEN
    a := a + QF1 / 3600;
    END_IF
    Заранее благодарен!!!
    Код:
    BOOL X, Y;
    static BOOL XPrevios;
    static float a = 0;
    float QF1;
    
    // DEBUG only!
    *(float*)(PSW+300) = a;
    QF1 = *(float*)(PSW+256);
    
    // ALGORITM
    X = GetPSBStatus(4);
    Y = X & !XPrevios;
    XPrevios = X;
    if (Y)	{
        a = a + QF1/3600;
    }
    Захват-2.png Захват-4.png
    Вложения Вложения
    Последний раз редактировалось petera; 03.06.2020 в 00:14.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3

    По умолчанию

    Спасибо за сотрудничество!!!Буду пробовать...

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

    По умолчанию

    Цитата Сообщение от arelavv Посмотреть сообщение
    Спасибо за сотрудничество!!!Буду пробовать...
    X = GetPSBStatus(4); // получить состояние системного бита PSB4 - импульсы (меандр) с периодом 1сек

    Y = X & !XPrevios; // это R_TRIGGER
    XPrevios = X; // ловит фронт бита X

    А дальше как у Вас
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #5

    По умолчанию

    Опробовал все окей.
    Осталось поместить в энергонезависимую память и на ФЛЭШ, но это я пожалуй попробую сам. Помнится это было рассмотрено на Форуме не один раз.

  6. #6

    По умолчанию

    Дальше привязал вместо панельки ввода регистр прибора, осталось сделать не стираемые после отключения панели значения, то бишь поместить в Э.Н.Память ну и придумать как сделать сброс на "0". чтобы число не выходило за заданную разрядность. Обычно дежурный КИП это делает раз в месяц. У меня это было сделано на ПЛК в ФБ. В СИ не умею поэтому и попросил помощи. Еще раз спасибо.

  7. #7

    По умолчанию

    Да!!!petera хотел спросить а почему //Debug only...

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

    По умолчанию

    Цитата Сообщение от arelavv Посмотреть сообщение
    Да!!!petera хотел спросить а почему //Debug only...
    потому, что к основному алгоритму эти две строчки отношения не имеют
    их назначение посмотреть работу макроса на экране.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #9

    По умолчанию

    То что не имеют я понял, меня смутило слово Debug...ну это так для поддержания разговора...

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

    По умолчанию

    Не стираемые значения - будут в регистрах PFW500..501
    Код:
    BOOL X, Y;
    static BOOL XPrevios;
    static float a = 0;
    float QF1;
    static BOOL Init;
    
    // DEBUG only!
    *(float*)(PSW+300) = a;
    QF1 = *(float*)(PSW+256);
    
    //Firs run
    if (!Init)	{
        Read(HMI_LOCAL_MCH, 0, TYPE_PFW, 500, 0, TYPE_DWORD, &DWord_2_Float(a));
        Init = TRUE;
    }
    // ALGORITM
    X = GetPSBStatus(4);
    Y = X & !XPrevios;
    XPrevios = X;
    if (Y)	{
        a = a + QF1/3600;
        Write(HMI_LOCAL_MCH, 0, TYPE_PFW, 500, 0, TYPE_DWORD, Float_2_DWord(a));
    }

    ЗЫ
    Цитата Сообщение от arelavv Посмотреть сообщение
    То что не имеют я понял, меня смутило слово Debug...ну это так для поддержания разговора...
    Мои попытки как-то помочь в отладке макросов путем вывода диагностических сообщений на экран https://owen.ru/forum/showthread.php...l=1#post251022
    Вложения Вложения
    Последний раз редактировалось petera; 03.06.2020 в 19:25.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. макрос для пр 200
    от pt100 в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 11.02.2019, 18:06
  2. макрос LT
    от niklud19511 в разделе Среда программирования OWEN Logic
    Ответов: 3
    Последнее сообщение: 08.07.2018, 05:12
  3. Макрос
    от CEkip в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.04.2012, 21:54
  4. РМ1 индикация суммарного расхода
    от iris887 в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 16.02.2012, 15:18
  5. Регулирование расхода
    от DeMax в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 18.06.2009, 12:49

Ваши права

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