Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: Время цикла ПР205 и ПР225

  1. #11

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    Не делайте так больше
    При виде этого где-то плачет котик и грустит розовый пони
    Код:
        term:= POW(-1.0,  udint_to_real(n)) * POW(arg,  udint_to_real(2*n + 1)) /  udint_to_real(2*n + 1);
    Это заменяется на менее затратное по времени и вычислениям, нужно только правильно инициировать переменные
    Код:
      arg := -arg*arg;
      n := n+2;
      term := term+arg / udint_to_real(n)
    Покажите мне, где я просил код исправить? Тем более я взял его на форуме как есть, а проверить успел только в симуляции.
    https://owen.ru/forum/showthread.php...l=1#post475284
    Я просил ТС проверить код на время цикла, а вы в своём репертуаре, пофиг что пишут, буду гнуть свою линию.

    Как и сравнивать Лоджик с Codesys3.5, просто мания какая то.
    Последний раз редактировалось kondor3000; 03.02.2026 в 21:25.

  2. #12

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Покажите мне, где я просил код исправить? Тем более я взял его на форуме как есть, а проверить успел только в симуляции.
    https://owen.ru/forum/showthread.php...l=1#post475284
    Я просил ТС проверить код на время цикла, а вы в своём репертуаре, пофиг что пишут, буду гнуть свою линию.
    Прошу прошения. Больше не повторится.
    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Как и сравнивать Лоджик с Codesys3.5, просто мания какая то.
    Не с CODESYS, а со стандартом (и ГОСТ и IEC) на язык ST.
    Прошу прощения. Больше не повторится.

  3. #13

    По умолчанию

    1. dat_x_Enable= false и dat_x_Enable_For= false - время цикла - 1мс
    2. dat_x_Enable=true и dat_x_Enable_For= true - время цикла - 14мс
    3. dat_x_Enable=false и dat_x_Enable_For= false - время цикла все еще - 14 мс
    PR205.owle
    Я вот что хотел понять

  4. #14

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Тогда проверьте пример, вычисление ArcTg (арк тангенса), в функции 1000 итераций, а у меня в проекте ещё и ArcSin и ArcCos имеется и везде по 1000 итераций. И это только 1 строка проекта, да у меня по вашему цикл ПР просто вечность займёт.
    Скрытый текст:
    Код:
    FUNCTION Arctg : REAL; // Автор 
    VAR_INPUT
        x: REAL;          (* Аргумент: x ∈ ℝ *)
    END_VAR
    
    VAR
        eps: REAL := 1E-6; (* Точность вычисления *)
        maxIter: UDINT := 1000; (* Макс. число итераций, тип UDINT *)
        x_abs: REAL;      (* |x| для проверки области сходимости *)
        arg: REAL;        (* Рабочий аргумент: x или 1/x *)
        n: UDINT := 0;    (* Номер итерации: n = 0, 1, 2, ... *)
        term: REAL;        (* Текущий член ряда *)
        sum: REAL := 0.0; (* Накопленная сумма ряда *)
        pi: REAL := 3.14159265358979323846; (* Число π *)
        correction: REAL := 0.0; (* Поправка для |x| > 1 *)
    END_VAR
    
    (* 1. Проверка области сходимости *)
    x_abs := ABS(x);
    
    IF x_abs > 1.0 THEN
        (* Для |x| > 1: используем тождество *)
        arg := 1.0 / x;
        IF x > 0.0 THEN
        correction :=   pi / 2.0;
        ELSIF x < 0.0 THEN
        correction := - pi / 2.0;
        ELSE correction := 0;
        END_IF
    ELSE
        (* Для |x| ≤ 1: вычисляем напрямую *)
        arg := - x;
    END_IF
    (* 2. Вычисление ряда Тейлора *)
    WHILE n < maxIter DO
        (* Вычисляем текущий член ряда: (-1)^n * arg^(2n+1) / (2n+1) *)
        term:= POW(-1.0,  udint_to_real(n)) * POW(arg,  udint_to_real(2*n + 1)) /  udint_to_real(2*n + 1);
         
        sum := sum + term;
        (* Проверяем достижение точности *)
        IF ABS(term) < eps THEN
            EXIT;
        END_IF
    
        (* Переход к следующей итерации *)
        n := n + 1;
    END_WHILE
    
    (* 3. Формируем итоговый результат *)
    Arctg := correction - sum;
    end_function

    А то может и ссылку на все функции удалить надо https://owen.ru/forum/showthread.php...l=1#post397789
    На ПР205 при x=1.0 время цикла 72 мс

  5. #15

    По умолчанию

    Цитата Сообщение от igorlisin Посмотреть сообщение
    На ПР205 при x=1.0 время цикла 72 мс
    Офигеть, значит эти функции нельзя использовать, надо будет проверить на другой ПР.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 11
    Последнее сообщение: 30.10.2025, 15:35
  2. Изменение логотипов ПР205 и ПР225
    от zaychenko в разделе Среда программирования OWEN Logic
    Ответов: 4
    Последнее сообщение: 19.03.2025, 09:07
  3. Время цикла в ПЛК-210-3
    от Р.Александр в разделе ПЛК2хх
    Ответов: 4
    Последнее сообщение: 13.05.2022, 14:18
  4. Еще раз про время цикла ПЛК
    от Партизан в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 06.04.2011, 11:38
  5. Ответов: 21
    Последнее сообщение: 03.03.2009, 16:27

Ваши права

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