А с округлением получилось?
С преобразованием в инт какие проблемы? Берёте макрос и пользуйтесь! Если не устраивает по каким-то мотивам, например религиозным - ищете другой, всё!
Вид для печати
Ave.
Вопрос, можно как-то использовать сервисные переменные в макросе?
Трабл в недельном таймере. Он работает с сервисными переменными и кучей всего ещё. Хочу закинуть всё это в макрос, а на ввод подавать только время и mode.
Вложение 59090
Вложение 59091
А онлайн база макросов планирует расширяться?
Будут ли в неё добавляться пользовательские макросы?
На второй вход макроса округления подаётся константа(значение) соответствующая количеству знаков после запятой, до которого происходит округление, это если что непонятно!
С макросом преобразования Float в Int(тоже имеется, как Вы заметили, в моём проекте) никаких проблем в принципе не может возникнуть, один вход один выход(как бы и путать нечего), значения преобразования ограничены диапазоном Int!
Короче, напишите, какие у Вас возникли проблемы, если с этим макросом проблем не может возникнуть в принципе, просто любопытно!
Может Вы макрос не можете перенести? Можно так: открываете оба проекта(мой и ваш) и с помощью копировать-вставить переносите в свой проект! В принципе имеются более правильные способы переноса макросов, но этот самый простой!
добрый день. где найти простое реле с задержкой по времени с выносом времени в переменную?
Как работать с таймерами есть информация тут: https://owen.ru/forum/showthread.php...l=1#post340010
Человеку нужен выход 'ET'
Мелкий, гадалка из Вас никудышняя, во всяком случае я затрудняюсь припомнить случай когда Вы угадали, хотя постоянно это делаете, когда это не нужно(в этом нет необходимости), пусть чел, сам осознает что он хочет и вразумительно напишет!
короче, здесь в посте 170 я таймер выкладывал с паузой, прямым и обратным отсчётом времени: https://owen.ru/forum/showthread.php?t=33720&page=17
И можно в качестве задающего генератора использовать не секундные импульсы(как в моих проектах), а с меньшим периодом, например 0,1 или 0,01 секунды!
Подскажите, какой макрос преобразования сопротивления в температуру взять из базы для термопреобразователя ТП203-8/150/м-М20S22 ХА-И-А+0м??? спасибо
Спасибо. Так и подозревал
Всем привет. Натолкнулся на готовый макрос "OperTimer_v1.00" . Кто ни будь пробовал его прикрутить в проект? Вложение 59536
у меня не получается его запустить.
Да все работает, это я не допёр. Спасибо за уделённое время)
Доброго времени суток! Подскажите где найти блок аварий котла, не могу найти...скрин прилагаю.Вложение 60361
Вы бы лучше написали, что вам надо от блока, у Сергей0308 полно готовых блоков и аварий в том числе.
например https://owen.ru/forum/showthread.php?t=31076&page=2
Добрый день. Использую в проекте макрос AVG, OwenLogic при этом жалуется на этот блок и выдает предупреждение: Обнаружен циклические связи (0) или блоки (1) в которых используются эти самые связи. Вы можете заменить их на линии задержки сейчас или позже. Подскажите, пожалуйста, насколько это критично и что надо делать?. При этом сам макрос работает.
Работает не трогайте. Ну или отредактируйте как предлагает ОЛ и проверьте работу. Иногда при данной ошибке блок работает правильнее чем с линией задержки, зависит от задумки создателя.
Ну вот и хотелось узнать у создателя. Просто непонятно, оно так и должно быть?
Сейчас создал пустой проект. Вставил в него блок AVG-тоже ругается.Вложение 60908
А меня, вот интересует, кто и как добавляет макросы в базу? Просто есть непонятки: примеры
1. Макрос 2PosHisReg из раздела "Управляющие и регулирующие модули" и 2PHReg+ из раздела "Регуляторы" - оба двухпозиционные регуляторы с гистерезисом, но почему в разных разделах?
2. Такая же фишка с недельным таймером - один есть а разделе "Дата и время", другой в разделе "Доп. функции"
3. Есть устаревшие макросы, которые используют fSel в виде макроса, хотя в Лоджике уже давно есть функция
4. Есть макросы без явно выраженных обратных связей - они на полотне весело светятся желтым.
Я понимаю, что все это на ход не влияет, но нельзя ли как-то навести порядок в базе!
Так там полный беспорядок!
Один раз Юрия Реваку спрашивал зачем в макросе два одинаковых элемента(уже и не припомню насчёт какого макроса интересовался), никак между собой не связанных, макрос был в менеджере компонентов(раньше это по-другому называлось), может лучше удалить один элемент из макроса, кому надо 2 элемента - возьмут два макроса, а кому один нужен - второй будет висеть мёртвым грузом?
Ответ удивил, говорит в таком виде к нему он поступил, ну это же не дело, надо всё приводить в человеческий вид!
Короче, согласен с товарищем, в плане всё поправить!
Немного ошибся, даже не два одинаковых элемента, а четыре: https://owen.ru/forum/showthread.php?t=25067&page=4
Хочу библиотечный макрос График по четырем точкам (Graf_4pnt_v1.04) переделать под 10 точек, но что-то ума не хватает. Помогите.
До пилил, вроде работает.
Мой макрос в базе называется PLA, но я уже на ST вариант выкладывал https://owen.ru/forum/showthread.php...l=1#post369459
график по 10 точкам, метод поиска делением интервала пополам, известный также как двоичный поиск или Дихотомия
Код:function PLA_ST: 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;
In: real;
end_var
var //объявление локальных переменных
a:udint; (*Начало интервала поиска*)
b: udint; (*Конец интервала поиска*)
N: udint; (*Число точек в графике*)
i: udint;
x: array [0..9] of real;
y: array [0..9] of real;
end_var
N:= 10;
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
PLA_ST:=y1;
ELSIF IN>= x[N-1] THEN
PLA_ST:= y[N-1];
(*Теперь можно начать поиск*)
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;
(*Теперь самое простое - сделать линейную аппроксимацию по двум точкам ;) *)
PLA_ST:= y[b] - (x[b] - IN) * (y[b] - y[a]) / (x[b] - x[a]);
END_IF
end_function