Проверил - посыпаю голову пеплом.
Очень благодарен, что делаете работу за ОВЕН...
Я пробовал один из примеров из кодесус перенести в ОЛ - там сразу проверка подавилась.
Это хелп такой...
Не понимаю, зачем они скрывают возможности?
Проверил - посыпаю голову пеплом.
Очень благодарен, что делаете работу за ОВЕН...
Я пробовал один из примеров из кодесус перенести в ОЛ - там сразу проверка подавилась.
Это хелп такой...
Не понимаю, зачем они скрывают возможности?
Никто не скрывает, в Лоджике действительно пока урезанный ST, но кое что тут есть. Самое плохое, то что сделали только функции, был бы ФБ с несколькими выходами, уже бы намного лучше стало. Всё это писали ещё на первых страницах темы, а воз и ныне там.
Обещали сделать не только ФБ, но и TIME(); переменные TIME, DWORD, INT, BYTE. Год прошёл!!!
Одни баги и недоделки. На новой ПР103 урезали Мастера до 64 переменных!!! Не зря я только на ПЛК работаю, нахрен эти ПР.
Последний раз редактировалось kondor3000; 29.11.2022 в 21:17.
Вариант
Код:function PLA_STmod: real; // (c) PeterA var_input //объявление входных переменных x1: real; x2: real; x3: real; x4: real; x5: real; x6: real; x7: real; x8: real; x9: real; x10: real; y1: real; y2: real; y3: real; y4: real; y5: real; y6: real; y7: real; y8: real; y9: real; y10: real; N: udint; (*Число точек в графике*) Is_L_Line:bool; (*Слева от первой точки. Если 1 прямая параллельная оси Х, если 0 продолжение кривой*) Is_R_Line:bool; (*Справа от последней точки. Если 1 прямая параллельная оси Х, если 0 продолжение кривой*) In: real; end_var var //объявление локальных переменных i: udint; a:udint; (*Начало интервала поиска*) b: udint; (*Конец интервала поиска*) x: array [0..9] of real; y: array [0..9] of real; end_var IF N > 10 THEN N:= 10; ELSIF N < 2 THEN N:= 2; END_IF x[0]:= x1; x[1]:= x2; x[2]:= x3; x[3]:= x4; x[4]:= x5; x[5]:= x6; x[6]:= x7; x[7]:= x8; x[8]:= x9; x[9]:= x10; y[0]:= y1; y[1]:= y2; y[2]:= y3; y[3]:= y4; y[4]:= y5; y[5]:= y6; y[6]:= y7; y[7]:= y8; y[8]:= y9; y[9]:= y10; (*Начальные значения интервала поиска*) a:= 0; b:= N-1; (*Обрезание графика для крайних точек*) IF IN <= x[0] THEN b:= 1; IF Is_L_Line THEN In:= x[0]; END_IF ELSIF IN >= x[N-1] THEN a:= N-2; IF Is_R_Line THEN In:= x[N-1]; END_IF (*Теперь можно начать поиск*) ELSE WHILE (b-a) <> 1 DO (*В конце концов, входной сигнал ТОЧНО попадет между двумя соседними точками X(a) и Х(а+1)*) i:= (a+b)/2; (*Делим интервал поиска пополам*) IF IN = x[i+1] THEN (*Может нам повезло, и мы сразу нашли точку? *) a:= i; b:= i+1; (*Бинго! прекращаем итераций, нечего в пустую молотить :) *) (*мимо :( ,тогда посмотрим в какую половину интервала попали*) ELSIF IN > x[i] THEN (*Если входной сигнал больше середины интервала поиска,*) a:= i; (*то следующий поиск будем делать начиная от середины и до конца массива*) ELSE (*А если входной сигнал меньше середины интервала поиска,*) b:= i; (*то следующий поиск будем делать начиная от начала и до середины массива*) END_IF (*Таким образом на каждой итерации отбрасываем из поиска заведомо ненужную половину значений две соседние координаты X(a) и Х(а+1), меду которыми попадает входной сигнал найдем очень быстро для 8 точек графика нужно не более 3 итераций при 9..16 точек в графике нужно не более 4 итераций при 17..32 точек в графике нужно не более 5 итераций при 33..64 точек в графике нужно не более 6 итераций при 65..128 точек в графике нужно не более 7 итераций инфа точная - 100% ;) *) END_WHILE; END_IF (*Теперь самое простое - сделать линейную аппроксимацию по двум точкам ;) *) PLA_STmod:= y[b] - (x[b] - IN) * (y[b] - y[a]) / (x[b] - x[a]); end_function
Последний раз редактировалось petera; 01.12.2022 в 11:57.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Вот интересно, в функцию ST вход и выход внешние.
Фильтры входа не включаем. ПР200
Какую частоту ST через себя пропустит, не искажая входной сигнал?
Какой мах цикл можно создать внутри, типа:
for i :=0 to 1 by X do i:=i+1; i:=i-1; end_for
X - мах число
ST, по идее должен работать на частоте ядра.
это не компьютерный язык программирования, здесь сперва придет значение текущее аналогово входа, потом выполнится весь код, включая функцию ST, затем что то уйдет на выхода и далее повториться следующая итерация цикла контроллера, поэтому ни о какой фильтрации внутри макроса речи быть не может
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
Это понятно.
Я про булевый вход и выход (например байт -> байт), и только ST, без других кодов - только одна функция на чистом листе.
Выполнении цикла и вычислений в цикле произойдёт на частоте ядра?
Вроде как ничто не должно "мешать" выполнится ST функции???
Получится какой программный быстрый обработчик реализовать?PHP код:
for i :=0 to 1 by X do Input1:= Input1+1; end_for
X - мах число и выдать Input 8 бит на выход
Интересует именно пик быстродействия.
И ещё - прирвёт ли что-нить обработку функции?
Последний раз редактировалось ПавелП; 03.12.2022 в 22:44.
догонит и еще раз прирвёт
Для начала Вы разберитесь как цикл FOR работает, если Х больше чем единица, то произойдет одна итерация
О каких 8 битах идет речь, если в ОЛ есть только були, целочисленные и вещественные числа, желательно бы сформулировать задачу, так чтоб она была понятна
Хотите какое то быстродействие проверить, собирайте схему сами, запускайте и вычисляйтевозможности ПР, если что то не понятно выкладывайте код с объяснением что хотели получить и что в итоге получается
Bad programmers worry about the code. Good programmers worry about data structures and their relationships
среди успешных людей я не встречала нытиков
Барбара Коркоран
А я про что?
>> Я про булевый вход и выход (например байт -> байт),
Входы I1..I8 сформируют входной байт.
Выходы Q1..Q8 выходной байт.
Спрашивалось у народа про:Сообщение от capzap
>> "Какую частоту ST через себя пропустит, не искажая входной сигнал?"
Если вы не знаете, то так и скажите.
Подразумевается, что тут гуру за годы уже "собаку съели"!
В понедельник на работе и проверим.
P.S. Кстати.
- Это компьютерный язык программирования!!!Сообщение от capzap
То что его зажали в функцию, совершенно не мешает
управлять сложным устройством.
По крайней мере я справился, отчего и задался максимумом.