Страница 10 из 10 ПерваяПервая ... 8910
Показано с 91 по 96 из 96

Тема: Отображение данных с ПЛК210 на цифровом дисплее СП310-Р

  1. #91

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    В таблице, и соответственно в переменной wDownTimeS2Hх, вместо 509 отображается 37098 и 29851.

    Значение доходит до 9999 (так как в таблице ограничено 4 знаками) и начинается отсчет сначала, и именно это значение записывается в wDownTimeS2Hх, а нужно чтобы 509.
    Вложение 81545
    Думаю у вас сложение происходит несколько раз, а должно происходить однократно, по R_Trig, или просто присваивайте 509 на выход без сложения.
    Получается вы отравляете в панель не ту переменную, вместо 509 у вас 37 тысяч
    Последний раз редактировалось kondor3000; 24.01.2025 в 14:33.

  2. #92

    По умолчанию

    Я ТС уже не понимаю. То ему надо суммировать, то не надо. Походу щас ожидаю вопросы по правильности работы case, типа он не те числа складывает.. Вы определитесь как элементарные функции работают.

    Скрины разрисовывать время есть, а приложить исходник в виде файла проекта совесть не позволяет. Тогда уж код отдклите служебными словами кода...

  3. #93

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Думаю у вас сложение происходит несколько раз, а должно происходить однократно, по R_Trig, или просто присваивайте 509 на выход без сложения.
    По времени цикла программы...)
    Ниче, и так сойдет.

    PS Сейчас опять новый вопрос предвижу: какое такое время цикла... Что за 20 мс по умолчанию... Мне так не надо...

    Ваш функциональный блок, кстати, не информативен без кода, его вызывающего. Триггер нужен или вне, или внутри блока.
    Последний раз редактировалось МихаилГл; 24.01.2025 в 14:38.

  4. #94
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,590

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    Все верно, нужно, чтобы к старому значению wDownTimeS2H8 прибавлялось текущее значение wDowntime
    ну тогда значения 37098 и 29851 это результат сложения старого с текущим, что не так? Где тогда должно отображаться текущее?
    И главное чтоб не "выкатывать" такие "портянки" напишите функцию, например
    Код:
    function Solver: WORD;
        var_input
            OLD_TIK : WORD;
            tDowntime: TIME;
        end_var
        var_
            dwDowntime: DWORD;
        end_var
    
        dwDowntime:= TO_DWORD (tDowntime);
        dwDowntime:= dwDowntime / 1000; //Перевод миллисекунд в секунды
        Solver := OLD_TIK + TO_WORD (dwDowntime);
    end_function
    и тогда заметно код сократится, если в каждом кейсе написать wDownTimeSXHX:= Solver(wDownTimeSXHX,tDowntime);
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  5. #95

    По умолчанию

    А может ТС смущает:
    12345:= 12345 + 123

    И он хочет узнать почему отображается не:
    12345:= 12222 + 123

    Ну думаю это не так, и все же он спрашивает о том, о чем мы все говорим...

    PS Включил ПК, щас набросаю код...
    Последний раз редактировалось МихаилГл; 24.01.2025 в 14:57.

  6. #96

    По умолчанию

    Цитата Сообщение от Mikhail_NNT Посмотреть сообщение
    .....
    Безымянный.png

    Не благодарите...

    У ТС там арифметическая прогрессия была. Задолбался переменные прописывать начала-конца часов. Ну мы же не можем проект приложить, мы выше этого...

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

    PS2 Создайте цикл на 1000 мс, перенесите туда ваш код, и просто прибавляйте в вашем старом алгоритме не время, а 1. Это кстати так и надо делать. Таймер можно вообще убрать. Тогда и часовки будут правильными.

    Код:
    If not кнопка-стоп then
    Case... 
    1: часовка1:= часовка1 + 1
    2: часовка2:= часовка2 + 1
    ...
    И никаких преобразования таймеров...
    Последний раз редактировалось МихаилГл; 24.01.2025 в 19:06.

Страница 10 из 10 ПерваяПервая ... 8910

Похожие темы

  1. Ответов: 25
    Последнее сообщение: 03.09.2020, 09:37
  2. Программируемое реле ПР200. Отображение информации на дисплее.
    от mchelarsky в разделе Программируемые реле
    Ответов: 2
    Последнее сообщение: 08.08.2019, 12:50
  3. Отображение float/int на дисплее ПР200
    от flicker581 в разделе Среда программирования OWEN Logic
    Ответов: 0
    Последнее сообщение: 17.02.2016, 19:12
  4. Ответов: 8
    Последнее сообщение: 05.06.2014, 21:33
  5. Ответов: 4
    Последнее сообщение: 21.02.2014, 09:24

Ваши права

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