Я же ссылку дал, в смысле, ничего искать не надо!
В моём проекте всё будет работать с приоритетом у входов-выходов с меньшим числовым значением, если хотите обратный приоритет(у входов-выходов с большим числовым значением) - сделайте настройки двух макросов(субмакросов), входящих в состав макроса в обратном порядке!
Короче, такое впечатление, что Вы либо не читаете что я пишу, либо не понимаете смысла написанного, даже не знаю что хуже!
Ещё раз повторю, мне не сложно: с состав макроса входят два других макроса(субмакроса), если Вы хотите чтобы в вашем проекте макрос работал также как в моём, надо и настройки субмакросов перенести(скопировать), много раз в разных темах об этом писал, даже представить не могу, что здесь может быть непонятным?!
https://owen.ru/forum/showthread.php...l=1#post421370
Последний раз редактировалось Сергей0308; 28.06.2025 в 19:10.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Речь не об этом. Я взял проект который вы когда-то присылали и оно работало, а в свежем лоджике не завелось. Я так и не понял почему. Я не переносил макрос в новый проект.
Все последние вопросы, давно собраны в одном месте. Ссылку давно бы сохранили.
И логарифмы и выбор одного из нескольких нажатий ( Кто раньше встал, того и тапки на ST )
https://owen.ru/forum/showthread.php...=9&p=429067#81
Последний раз редактировалось kondor3000; 28.06.2025 в 10:05.
Если Вы основной макрос открываете на редактирование и проверяете алгоритм в симуляции внутри основного макроса, то он будет работать по другому, в смысле, уставка времени минимального периода там будет своя, в смысле, назначенная в свойствах основного макроса не действует, с этим ничего не поделаешь, так у всех макросов будет!
В принципе уставка может даже логику работы менять, например: у меня есть макрос двухпозиционного(релейного) регулятора с настройками режима работы(нагреватель или холодильник) в свойствах макроса:
https://owen.ru/forum/showthread.php...l=1#post424807
Последний раз редактировалось Сергей0308; 28.06.2025 в 18:43.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Добрый день!
Если нужны обратные тригонометрические функции и объём в горизонтальном цилиндре - цистерне по высоте жидкости, то прошу ознакомится. Сделано Алисой ИИ.объём цисцерны на боку.owle
Не слишком удачные реализации.
неудачный пример:
Более рациональный подход - итерационные вычисления слагаемого на основе предыдущего значения.
Была нужна только функция sin(x), её и реализовывал. Другие функции - подождут своего часа.
Смысл алгоритма - сначала инициализация переменных, потом итерационно вычисляется очередное слагаемое на основе предыдущего его значения
У sin
слагаемое на предыдущей итерации А(i-1) равно
A(i-1) := (-1)^(i-1) * x^(2i-1) / (2i-1)!
а слагаемое на нынешней итерации А(i) равно
A(i) := (-1)^(i) * x^(2i+1) / (2i+1)!
Разделю А(i) на А(i-1) и получу множитель для перехода от A(i-1) к A(i)
A(i) := m * A(i-1)
m := A(i) / A(i-1)
= [(-1)^(i) * x^(2i+1) / (2i+1)!] / [(-1)^(i-1) * x^(2i-1) / (2i-1)!]
= (-1)^1 * x^2 / [(2i+1)*(2i)]
= -x^2 / [(2i+1)*(2i)]
Дальше просто реализую на языке программирования
Попутно, перед вычислениями привожу аргумент периодической функции к меньшему диапазону.
Чтобы не испытывать судьбу, непредсказуемый цикл REPEAT ограничиваю число итераций количеством 10.
Число итераций 10 взял из соображений оценки 10-го слагаемого в сумме - напомню, что в самом начале аргумент приведён к узкому диапазону, что позволяет выполнить оценку погрешности в наихудшем случае. Сейчас уже не вспомню это значение, пересчитывать лень, но тогда решил, что приемлемой точности добьюсь.
Думаю, что можно улучшить, объявив переменную f типом real, т.к. значения небольшие и потери точности при сложении с 2 не произойдёт.Код:function sin: real; var_input x : real; end_var var n: udint; Pi : real := 3.1415926535897932384626433832795; Pi_2: real := 6.2831853071795864769252867665590; a, s, xx: real; f: udint; end_var // приведение аргумента к диапазону 0...2*Pi if x < 0 then n := real_to_udint(abs(x) / Pi_2) + 1; x := x + udint_to_real(n) * Pi_2; end_if; if x > Pi_2 then n := real_to_udint(abs(x) / Pi_2); x := x - udint_to_real(n) * Pi_2; end_if f := 1; a := x; s := x; xx := x*x; repeat a := - a * xx / udint_to_real(f+1) / udint_to_real(f+2); f := f + 2; s := s + a; if f > 20 then exit; end_if; until abs(a) < 0.0000001 end_repeat sin := s; end_function
Спасибо конечно, только написали вы не туда. Тут Рогов Алексей выложил проект Объём цисцерны на боку.owle, выше на 1 пост,
откуда я и взял вычисление ArcTg, ArcSin, ArcCos.
И на минутку у меня функция Sin считает точно до 7 знака, а ваша врёт на 5 знаке. И накой мне такая функция.
Последний раз редактировалось kondor3000; 03.02.2026 в 22:01.
Проверял на всех, но конкретно на скрине вход -0,227, 1 Синус.jpg
моя функция SIN_RAD -0,2250555
ваша ___________Sin -0,22501531
на калькуляторе_____ -0,22505550283358259230719813707651
Последний раз редактировалось kondor3000; 03.02.2026 в 22:26.