PDA

Просмотр полной версии : разные вопросы новичка



Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15]

p-nik
13.03.2024, 16:58
нет, без привязки к номеру насоса. только блокировка одновременного запуска.
Появилось условие запуска сразу двух насосов. Сначала запустился один с наименьшей наработкой, через время Т - второй.
на картинке упрощенная программа

Sergej_
13.03.2024, 17:10
Подскажите, в чем может быть ошибка в программе макроса?
переменные P1_start и P2_Start должны запускать c интервалом в 5 сек (задается отдельно), но фактически они запускаются только в разные циклы.

Если исходить из этого, первого Вашего вопроса, то можно так
74325

p-nik
13.03.2024, 17:16
Если исходить из этого, первого Вашего вопроса, то можно так
74325

да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2

EFrol
13.03.2024, 17:19
да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2

Тогда где счетчики моточасов?

p-nik
13.03.2024, 17:33
Тогда где счетчики моточасов?

Полный макрос в картинку не влезет. Сделал упрощенную программу для разбора моей проблемы

Sergej_
13.03.2024, 17:38
да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2
Ну так Вас и просили изложить все условия, Вы задали вопрос, выложили схему, оказалось вопрос несколько иной, и схема "упрощенная".
Из нее виден только один сигнал пуск, флага приоритета ( или номера разрешенного к пуску) насоса нет. Как и

Тогда где счетчики моточасов?
На форуме очень много тем и обсуждений по ротации насосов, поищите. Наверняка найдете нужное решение.

p-nik
13.03.2024, 17:46
Ну так Вас и просили изложить все условия, Вы задали вопрос, выложили схему, оказалось вопрос несколько иной, и схема "упрощенная".
Из нее виден только один сигнал пуск, флага приоритета ( или номера разрешенного к пуску) насоса нет. Как и

На форуме очень много тем и обсуждений по ротации насосов, поищите. Наверняка найдете нужное решение.

забудьте про ротацию. Конкретно тот пример - почему игнорируется блокировка?
74326

Sergej_
13.03.2024, 17:57
Так Вы выложите эту часть в виде отдельного проекта, или макроса. Или кто то должен вручную рисовать, чтоб проверить?

AlexandrGr
13.03.2024, 17:59
У меня насосы запускаются по наработке
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?

p-nik
13.03.2024, 18:09
Так Вы выложите эту часть в виде отдельного проекта, или макроса. Или кто то должен вручную рисовать, чтоб проверить?
https://disk.yandex.ru/d/wMALoZHdprK2EA
OWEN Logic v2.6.345.0

p-nik
13.03.2024, 18:11
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?

Это уже другая тема

1exan
13.03.2024, 18:14
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?

Как вариант - можно сделать два значения наработки: одно (с возможностью обнуления) - собственно для учёта, другое (редактируемое) - для ротации

p-nik
13.03.2024, 18:19
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?

Макрос ротации насосов 2 шт.
https://owen.ru/forum/showthread.php?t=30327

Sergej_
13.03.2024, 18:24
https://disk.yandex.ru/d/wMALoZHdprK2EA
OWEN Logic v2.6.345.0

И пожалуйста, чтоб не было непоняток, условия включения-выключения выходов.

p-nik
13.03.2024, 18:35
И пожалуйста, чтоб не было непоняток, условия включения-выключения выходов.

условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic

EFrol
13.03.2024, 18:38
условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic

При каких условиях должен работать P1_start?
При каких условиях должен работать P2_start?

p-nik
13.03.2024, 18:45
При каких условиях должен работать P1_start?
При каких условиях должен работать P2_start?

Коллеги, зачем вам условия? Здесь просто "булевская" логика и программа не работает. Может расположение переменных не так, может ещё какие-то нюансы которые я не знаю

EFrol
13.03.2024, 18:48
Коллеги, зачем вам условия? Здесь просто "булевская" логика и программа не работает. Может расположение переменных не так, может ещё какие-то нюансы которые я не знаю

Когда Вы изложите условия или хотя бы "как должна работать программа" по Вашей логике? Тогда мы сможем указать на нюансы.

Dimensy
13.03.2024, 18:50
условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic

Проблема в том, что вы все переменные сделали энергонезависимыми. А зачем вы это сделали? Если не менять логику, то у вас включится второй выход и через 5 секунд добавится первый. Так и должно быть?

Sergej_
13.03.2024, 18:56
Блин, ну как зачем? Вы хотите чтоб одновременно не включались вообще или запуск разрешен, но с задержкой 5 сек., хотите чтоб приоритет был, у какого? Либо при каждом следующем включении попеременно включались? Вкл-выкл в течении менее5 сек. вариантов масса. То что у Вас , и не меняя логики , как Вы хотели, включится второй выход, через 5 сек 1-й. и при каждом включении так же будет . Я уж не спрашиваю про условия пуска. Поставьте л.з. Но этот вариант не будет отличаться от того что раньше рисовал Вам. Только сложнее.
74327

Вероятно Вы хотели что то типа счетчика сделать? N_start? Но это не так делается. Гадать сложно.

p-nik
13.03.2024, 19:19
Проблема в том, что вы все переменные сделали энергонезависимыми. А зачем вы это сделали? Если не менять логику, то у вас включится второй выход и через 5 секунд добавится первый. Так и должно быть?

Да. В данном случае именно это.
Про л.з. попробую уже завтра.
Спасибо!

Сергей0308
13.03.2024, 19:34
На форуме была подобная тема(если правильно понял вашу проблему), в смысле, если включаются одновременно более одного насоса(компрессора), точнее, подаются сигналы на запуск, то первый запускался сразу, а остальные по очереди, с определённым приоритетом и задержкой, чтобы снизить суммарный пусковой ток, Вы такой алгоритм хотите?
Короче, я много разных вариантов предлагал, вот один из них:

74329

FPavel
13.03.2024, 20:38
Здравствуйте. Возник вопрос касательно чтения значения мощности с счетчика WB-MAP3e на ПР205. Видел на форуме, что возникала такая проблема, но она была решалась в Codesys, а не в owen logic. Связь ПР с счетчиком есть, значения напряжения считываются исправно, а вот значения суммарной активной мощности нет. Если кто-нибудь сталкивался, то не могли бы подсказать, как справиться с данной проблемой?

Не могу понять, зачем суммарная активная мощность имеет тип "целое со знаком", оно реально может быть отрицательным?

Если в ПР требуется только вывести на экран, то можно сделать так полученное число умножить на 512 и полученный результат вывести в формате "с фиксированной запятой".

А перестановку байт при необходимости - сделайте самостоятельно. Один из 16 вариантов будет показывать правильно.

Для вывода числа (Reg0x1300 * 0.00512) удобно представить число форматом с "фиксированной запятой" - т.е. в виде двух переменных (целая и дробная части).



function_block TotalP_To_Display_ //имя функционального блока.

// предельные значения результатов для вычисления
// суммарной активной мощности с учётом масштабирования
// (умножения принятого числа на 0,00512)

// (2^32)-1 = 4 294 967 295
// (( (2^32)-1 ) * 512) = 2 199 023 255 040
// (( (2^32)-1 ) * 512) / (10^5) = 21 990 232,55040

// т.е. нужно выделить фиксированную дробную часть,
// а оставшаяся целая часть
// 21 990 232 (10) = 1 01001111 10001011 01011000 (2)
// занимает 25 бит и может уместиться в целой 32 разрядной
// переменной

var_input //объявление входных переменных
Reg0x1300: udint;
end_var

var_output //объявление выходных переменных
Int_8, Frac_5: udint;
end_var

var //объявление локальных переменных
A0, A1, A2: udint; //внутренний формат хранения регистра для вычислений
max_value: udint := 65535;
divizor: udint := 10000;
temp: udint;
end_var

// преобразование входного значения во внутренний формат с учётом умножения на (2^9) = 512
A2 := shr(Reg0x1300, 32-9);
A1 := shr(Reg0x1300, 7) mod (max_value + 1);
A0 := shl(Reg0x1300, 9) mod (max_value + 1);

// получение дробной части путём получения остатка от деления на (10^5)
// при делении на (10^5) возможно переполнение при "A1 := shl(temp, 16) + A1"
// поэтому сначала делится на 10, а затем на (10^4)
temp := A2 mod 10;
A2 := A2 / 10;
A1 := shl(temp, 16) + A1;
temp := A1 mod 10;
A1 := A1 / 10;
A0 := shl(temp, 16) + A0;
temp := A0 mod 10;
A0 := A0 / 10;
Frac_5 := temp;

temp := A2 mod divizor;
A2 := A2 / divizor;
A1 := shl(temp, 16) + A1;
temp := A1 mod divizor;
A1 := A1 / divizor;
A0 := shl(temp, 16) + A0;
temp := A0 mod divizor;
A0 := A0 / divizor;
Frac_5 := temp*10 + Frac_5;

// из A0 и A1 собирается целая часть числа
Int_8 := A0 + shl(A1, 16);

end_function_block

Думаю, что нужно переставлять байты полученного 32 разрядного числа. Это удобно делать и проверять сразу. Поэтому у меня этого нет.

p-nik
15.03.2024, 10:41
Блин, ну как зачем? Вы хотите чтоб одновременно не включались вообще или запуск разрешен, но с задержкой 5 сек., хотите чтоб приоритет был, у какого? Либо при каждом следующем включении попеременно включались? Вкл-выкл в течении менее5 сек. вариантов масса. То что у Вас , и не меняя логики , как Вы хотели, включится второй выход, через 5 сек 1-й. и при каждом включении так же будет . Я уж не спрашиваю про условия пуска. Поставьте л.з. Но этот вариант не будет отличаться от того что раньше рисовал Вам. Только сложнее.
74327

Вероятно Вы хотели что то типа счетчика сделать? N_start? Но это не так делается. Гадать сложно.

Всем спасибо! С л.з. всё работает как надо.


На форуме была подобная тема(если правильно понял вашу проблему), в смысле, если включаются одновременно более одного насоса(компрессора), точнее, подаются сигналы на запуск, то первый запускался сразу, а остальные по очереди, с определённым приоритетом и задержкой, чтобы снизить суммарный пусковой ток, Вы такой алгоритм хотите?
Короче, я много разных вариантов предлагал, вот один из них:

74329

Спасибо! Возьму на заметку

Сергей0308
15.03.2024, 11:28
Всем спасибо! С л.з. всё работает как надо.



Спасибо! Возьму на заметку

Если потребуется, настройки периода(задержки) в свойствах макроса и можно легко расширить до 32 входов-выходов!

maintenancekbk24@gmail.com
18.03.2024, 14:24
Добрый день! Уважаемые комрады. Нужна помощь в программировании ПР100. Подскажите пожалуйста каким образом настроить переменную на аналоговый вход в дискретный режим, при котором напряжение логической единицы 4.5в, а логического нуля поставить 2В.

kondor3000
18.03.2024, 14:31
Добрый день! Уважаемые комрады. Нужна помощь в программировании ПР100. Подскажите пожалуйста каким образом настроить переменную на аналоговый вход в дискретный режим, при котором напряжение логической единицы 4.5в, а логического нуля поставить 2В.

Уровни в ПР можно настроить или использовать аналоговый вход в режиме входа по напряжению. Тогда вы сможете выловить любой нужный уровень.
Сделайте сравнение входа <2 и >4.4 и получите логическую единицу или 0.
А по факту достаточно только сравнить >4.4 и будет логическая 1, остальное 0.

Dimensy
18.03.2024, 15:27
Добрый день! Уважаемые комрады. Нужна помощь в программировании ПР100. Подскажите пожалуйста каким образом настроить переменную на аналоговый вход в дискретный режим, при котором напряжение логической единицы 4.5в, а логического нуля поставить 2В.

А так не прокатывает?
74470

shev1975
19.03.2024, 01:23
Простите за глупый вопрос, попытался запустить симуляцию ФБ, и ничего не получил. Вроде все сделал как на видео с ОФ канала на Ютуб. Версия 2.6.346.0
74484

Sergej_
19.03.2024, 04:30
Простите за глупый вопрос, попытался запустить симуляцию ФБ, и ничего не получил. Вроде все сделал как на видео с ОФ канала на Ютуб. Версия 2.6.346.0
74484
Прицепите переменную "результат" к какому нибудь выходу, или сделайте энергонезависимой.

maintenancekbk24@gmail.com
19.03.2024, 07:47
Спасибо за помощь!

Newcomer
21.03.2024, 09:25
Добрый день

Для запуска режима онлайн отладки следует нажать на кнопку (см. картинку). Не вижу такой кнопки на панели инструментов.

kondor3000
21.03.2024, 09:29
Добрый день

Для запуска режима онлайн отладки следует нажать на кнопку (см. картинку). Не вижу такой кнопки на панели инструментов.

Рядом с запуском симулятора, она не активна пока не подключите ПР онлайн 74561

Newcomer
21.03.2024, 09:36
Рядом с запуском симулятора, она не активна пока не подключите ПР онлайн 74561

Спасибо, узрел.

Newcomer
21.03.2024, 09:39
При подключении ПР200 к ПК Windows сама драйвер найдет или его надо устанавливать.

rapuk
22.03.2024, 11:07
Здравствуйте. Подскажите пожалуйста, не получается понять в какую сторону двигаться.
Имеется инкрементальный энкодер, который измеряет длину, подключен на быстрые входы(FI1, FI2) к реле ПР205. К дискретному входу I3 подключена кнопка без фиксации.
Необходимо записать значение количества импульсов энкодера в переменную "Кол-во импульсов №1" при нажатии на кнопку.
При повторном нажатии на кнопку записать новое значение в переменную "Кол-во импульсов №2" и т.д.
Есть ли возможность вывести на экран информацию в виде:

Нажатие 1 — 1267 импульсов
Нажатие 2 — 2430 импульсов
...
Нажатие N — 76395 импульсов

Логика подсказывает, что нет необходимости каждый раз создавать новую переменную, а добавлять новое значение в текстовое поле после нажатия. А как это реализовать непонятно.
74594
74595

Во вложении тестовый файл.

EFrol
22.03.2024, 11:31
Предлагаю реализовать FIFO-буфер:
74598

rapuk
22.03.2024, 11:48
Большое спасибо! Работает

Newcomer
22.03.2024, 13:24
Добрый день

На экране ПР200 создано 6 строк. Какая кнопка используется для перемещения по строкам ?

Cs-Cs
22.03.2024, 14:14
Это вопрос чьего-то теста на знание ОВЕНа?
Вариант ответа с одной кнопкой не подходит.

Newcomer
22.03.2024, 14:25
Это вопрос чьего-то теста на знание ОВЕНа?
Вариант ответа с одной кнопкой не подходит.

И какая это кнопка ?

Newcomer
22.03.2024, 15:03
В режиме отображения для перехода по строкам используются кнопки что на картинке.
Какие кнопки используются для перехода между строками в режиме редактирование в РЭ не написано.

При входе в режим редактирования попадаю в первую строку экрана и дальше не могу никуда перейти.

У меня кнопка Стрелка вниз используется для перехода между экранами. Эта же кнопка штатно предназначена для перехода между строками экрана в режиме отображения.

Cs-Cs
22.03.2024, 15:37
В режиме редактирования по строкам переходы НЕ работают.
Нужно прокрутить экран до нужной строки кнопками Вверх и Вниз, а потом через SEL редактировать.

EFrol
22.03.2024, 15:39
А чтобы продолжить навигацию по строкам надо выйти из режима редактирования (ESC или OK).

Newcomer
22.03.2024, 15:53
В режиме редактирования по строкам переходы НЕ работают.
Нужно прокрутить экран до нужной строки кнопками Вверх и Вниз, а потом через SEL редактировать.

Экран до нужной строки прокручивается в режиме просмотра ? Это сколько же придется переключаться из режима в режим что бы отредактировать все строки.

rapuk
22.03.2024, 15:53
Подскажите, пожалуйста - можно ли задать максимальное значение "индикатора выполнения" на экране не статично, а равное переменной?
Т.е. есть переменная со значением 10000, индикатор должен отображать значения в пределах 0-10000

EFrol
22.03.2024, 16:02
Подскажите, пожалуйста - можно ли задать максимальное значение "индикатора выполнения" на экране не статично, а равное переменной?
Т.е. есть переменная со значением 10000, индикатор должен отображать значения в пределах 0-10000

Лучше отмасштабировать значение выводимой переменной.

rapuk
22.03.2024, 16:04
Подскажите как

EFrol
22.03.2024, 16:25
Допустим, что у нас индикатор отображает ValShow, у которого минимальное = 0, а максимальное = 100.
Нам известно фактическое максимальное ValMax и значение ValOut, которое надо отмасштабировать в ValShow.
Тогда самый простой способ:
74609

Королев Кирилл
22.03.2024, 16:48
Экран до нужной строки прокручивается в режиме просмотра ? Это сколько же придется переключаться из режима в режим что бы отредактировать все строки.

Если на экране находятся несколько доступных для редактирования элементов, то переходить между ними можно по клавише SEL:
74611
Для пролистывания именно строк нужно использовать стрелки

Newcomer
22.03.2024, 17:31
Если на экране находятся несколько доступных для редактирования элементов, то переходить между ними можно по клавише SEL:
74611



Для пролистывания именно строк нужно использовать стрелки
Пролистывание строк экрана при помощи стрелок возможно только в режиме просмотра.

EFrol
22.03.2024, 17:33
Пролистывание строк при помощи стрелок возможно только в режиме просмотра.

Да. Верно.

Newcomer
22.03.2024, 17:40
Да. Верно.

А как определить в каком режиме находишься, просмотр или редактирование ?

EFrol
22.03.2024, 17:43
А как определить в каком режиме находишься, просмотр или редактирование ?

Кажется, редактируемое значение мигает в режиме редактирования.

rapuk
22.03.2024, 17:48
Предлагаю реализовать FIFO-буфер:
74598

А подскажите - можно ли обнулить эти переменные при поступлении доп. импульса? Все счётчики с входом R работают только с булевыми значениями


Допустим, что у нас индикатор отображает ValShow, у которого минимальное = 0, а максимальное = 100.
Нам известно фактическое максимальное ValMax и значение ValOut, которое надо отмасштабировать в ValShow.
Тогда самый простой способ:
74609
Спасибо

Newcomer
22.03.2024, 18:13
т
Кажется, редактируемое значение мигает в режиме редактирования.

Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит. Параметр t предпр редактируется, а к остальным по SEL перейти не получается.

EFrol
22.03.2024, 18:13
Можно:
74614

EFrol
22.03.2024, 18:15
Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит.

Да. Я тоже не сразу привык. Поэтому вторую строчку использую для комментария, чтобы после редактирования нажимать сразу OK и далее листать до следующего параметра. Иногда первая строчка - наименование, вторая - единица измерения и рядом значение.

Newcomer
22.03.2024, 18:23
Да. Я тоже не сразу привык. Поэтому вторую строчку использую для комментария, чтобы после редактирования нажимать сразу OK и далее листать до следующего параметра. Иногда первая строчка - наименование, вторая - единица измерения и рядом значение.

Если после редактирования нажать OK, то произойдет выход из режима редактирования. И зачем это надо ?

EFrol
22.03.2024, 18:38
Если после редактирования нажать OK, то произойдет выход из режима редактирования. И зачем это надо ?

Чтобы нажав дважды стрелочку вниз перейти к следующему параметру.

Newcomer
22.03.2024, 18:40
Кому должен? Из режимов редактирования традиционно есть 2 выхода - с принятием значения и без. Как бы не понять этого при наличии ESC и OK нужно быть очень отстранённым.

С выходом из режима редактирования проблем нет. Проблема в переходе к редактирования следующего параметра на том же экране.

Newcomer
22.03.2024, 18:55
Какая проблема?

По SEL нет перехода к редактированию следующего параметра.

1exan
22.03.2024, 18:56
т

Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит. Параметр t предпр редактируется, а к остальным по SEL перейти не получается.

Перейти можно только к следующему редактируемому параметру на отображаемых в данный момент строках (2шт), т.е. от "t предпр" по SEL перейти к "Тпрогр" или "Рразр" точно не получится

Nsft
26.03.2024, 11:50
Здравствуйте. Я только начинаю разбираться в данное среде, потому надеюсь на понимание. У меня возник вопрос касательно сетевых переменных, а именно их сброса. У объекта, с которым я общаюсь по rs485 есть регистры, которые мне нужно перезаписывать. При начале работы логики ПР в регистр записываются нули, так как еще не сработали триггеры на запись значений в регистры, что портит работу алгоритма, а также из-за постоянной перезаписи регистра объект зависает на время от 5 секунд до нескольких минут. Видел в документации, что у сетевых переменных можно делать запись в регистры по команде переменной. Я реализовал данный вариант, но как показала практика, запись все равно происходит, что с моей стороны кажется странным при наличии запрета записи. В связи с этим вопрос, как запретить запись значения в регистр если значение на входе не поменялось или реализовать как-то интервально?

CleanS
26.03.2024, 12:06
Все сетевые переменные энергонезависимые и они сохраняют своё значение при выключении устройства. Соответственно при запуске они (значения) будут восстановлены на те, что были в момент выключения.
После загрузки ПР и запуска прошивки можно по очереди обновить значения переменных, требующих корректировки.

kondor3000
26.03.2024, 12:20
Здравствуйте. Я только начинаю разбираться в данное среде, потому надеюсь на понимание. У меня возник вопрос касательно сетевых переменных, а именно их сброса. У объекта, с которым я общаюсь по rs485 есть регистры, которые мне нужно перезаписывать. При начале работы логики ПР в регистр записываются нули, так как еще не сработали триггеры на запись значений в регистры, что портит работу алгоритма, а также из-за постоянной перезаписи регистра объект зависает на время от 5 секунд до нескольких минут. Видел в документации, что у сетевых переменных можно делать запись в регистры по команде переменной. Я реализовал данный вариант, но как показала практика, запись все равно происходит, что с моей стороны кажется странным при наличии запрета записи. В связи с этим вопрос, как запретить запись значения в регистр если значение на входе не поменялось или реализовать как-то интервально?

Так работать не будет, надо не запись запрещать ( разрешать), а переменные изменять, когда вам надо.
Например по условию, по биту, по времени или инициализация при включении питания. Инициализация может быть 0 или заранее заданным числом.

rapuk
27.03.2024, 17:24
Подскажите, пожалуйста - столкнулся с проблемой определения импульса для записи значений в переменные "Длина"
Импульсы приходят с энкодера, который измеряет длину. Через определенную длину срабатывает автоматика отрезного механизма продолжительностью около 10 секунд.
На тестовых подключениях, где срабатывание автоматики я эмулировал нажатием кнопки без фиксации - все работает замечательно, таким методом(спасибо EFrol'у):
74772
Но, как оказалось - при включении отрезного механизма идёт не один импульс, а целый пакет импульсов общей продолжительностью 10 секунд.
В результате каждый следующий импульс обнуляет показания длины и я не вижу предыдущего значения - всё забивается нулями.
Победить получилось, используя FTRIG вместо RTRIG, т.е. по заднему фронту последнего импульса.
Можно ли как-то зафиксировать только первый импульс из пучка, сохранить в памяти значение длины, а затем подождать 15 секунд и записать значение в переменную?

EFrol
27.03.2024, 18:37
Один пропускает - следующий через 15 сек:
74777

Импульс формируется при паузе между входными импульсами более 1 секунды, т.е. в конце пачки:
74778
Если заменить FTRIG на RTRIG, то наоборот фиксирует начало пачки.

rapuk
27.03.2024, 20:21
Элегантно, спасибо

Сергей0308
27.03.2024, 20:55
Один пропускает - следующий через 15 сек:
74777

Импульс формируется при паузе между входными импульсами более 1 секунды, т.е. в конце пачки:
74778
Если заменить FTRIG на RTRIG, то наоборот фиксирует начало пачки.

Вот здесь, в посте #3526 макрос выкладывал для разруливания одновременного запуска 8 устройств: https://owen.ru/forum/showthread.php?t=26216&page=353
В смысле на выход пропускается первый импульс, последующие импульсы пройдут не ранее минимального периода следования, настраивается в свойствах макроса, вроде, как Вы хотите!
Можно использовать любой вход-выход(с одинаковым номером).

rapuk
28.03.2024, 12:52
Подскажите - можно ли вывести на экран значение активного таймера TOF?
Я задаю с экрана в него значение, например 15000 мс.
Подаю импульс на вход, запускается таймер 100...200...850...мс
Как вывести/записать в переменную это значение (850) на экран?

74800

74801

1exan
28.03.2024, 13:03
Подскажите - можно ли вывести на экран значение активного таймера TOF?
Я задаю с экрана в него значение, например 15000 мс.
Подаю импульс на вход, запускается таймер 100...200...850...мс
Как вывести/записать в переменную это значение (850) на экран?


Со стандартного TOF это значение не взять. Поищите на форуме самописные таймеры

Сергей0308
28.03.2024, 13:36
Здесь таймер выкладывал с паузой, прямым и обратным отсчётом времени: https://owen.ru/forum/showthread.php?t=33720&page=17&highlight=%F2%E0%E9%EC%E5%F0+%E4%EB%FF+%CF%D0200

EFrol
28.03.2024, 13:59
При симуляции Timer будет отставать из-за 100мс цикла - в приборе цикл короче - должен успевать:
74808


function_block Timer

var_input
I : bool;
end_var

var_output
Q : udint;
end_var

var
gen : SYS.BLINK;
rt : SYS.RTRIG;
end_var

gen(I:=I, Th:=T#10ms, Tl:=T#10ms); rt(I:=gen.Q);
if rt.Q then Q := Q + 20; end_if
if not I then Q := 0; end_if

end_function_block


А вот вообще сказка:


function_block Timer

var_input
I : bool;
end_var

var_output
Q : udint;
end_var

var
time_prev : udint;
end_var

if I then
Q := time_to_udint(get_time()) - time_prev;
else
Q := 0; time_prev := time_to_udint(get_time());
end_if

end_function_block

rapuk
28.03.2024, 15:08
Вроде в OWEN Logic всё логично, но есть не логичные моменты.
На экране есть несколько элементов "Ввод/вывод (int/float)" и "динамический текст". Элементы добавлялись в разное время.
При работе прибора и нажатии на экране кнопки "SEL" редактирование элементов производится не по порядку сверху-вниз, а как-то неочевидно:
74812

В мануале и настройках элементов параметра "приоритет" или "порядок" нет. Как сделать, чтобы элементы выбирались по очереди сверху-вниз?

rapuk
28.03.2024, 15:54
При симуляции Timer будет отставать из-за 100мс цикла - в приборе цикл короче - должен успевать:
74808
...
А вот вообще сказка:


function_block Timer

var_input
I : bool;
end_var

var_output
Q : udint;
end_var

var
time_prev : udint;
end_var

if I then
Q := time_to_udint(get_time()) - time_prev;
else
Q := 0; time_prev := time_to_udint(get_time());
end_if

end_function_block


Работает, большое спасибо. А по-поводу порядка элементов на экране не подскажете?

kondor3000
28.03.2024, 16:16
Подскажите - можно ли вывести на экран значение активного таймера TOF?
Я задаю с экрана в него значение, например 15000 мс.
Подаю импульс на вход, запускается таймер 100...200...850...мс
Как вывести/записать в переменную это значение (850) на экран?


Вот таймеры TOF и TOF_P с выходом ET и паузой 74819

Королев Кирилл
28.03.2024, 16:26
Вроде в OWEN Logic всё логично, но есть не логичные моменты.
На экране есть несколько элементов "Ввод/вывод (int/float)" и "динамический текст". Элементы добавлялись в разное время.
При работе прибора и нажатии на экране кнопки "SEL" редактирование элементов производится не по порядку сверху-вниз, а как-то неочевидно:
74812

В мануале и настройках элементов параметра "приоритет" или "порядок" нет. Как сделать, чтобы элементы выбирались по очереди сверху-вниз?

Порядок выбора элементов обусловлен их положением в меню "компоненты экрана". Можно перетаскивать элементы для изменения порядка выбора.
74823
Дополним описание в справке по этому поводу

rapuk
28.03.2024, 16:34
Порядок выбора элементов обусловлен их положением в меню "компоненты экрана". Можно перетаскивать элементы для изменения порядка выбора.
74823
Дополним описание в справке по этому поводу

Спасибо, оказывается порядок этих элементов "снизу вверх" :)

Dimensy
28.03.2024, 19:03
Порядок выбора элементов обусловлен их положением в меню "компоненты экрана". Можно перетаскивать элементы для изменения порядка выбора.

А для ПР200 что-то похожее можно организовать?

1exan
28.03.2024, 19:05
А для ПР200 что-то похожее можно организовать?

Поддерживаю, очень не хватает такого инструмента (копипастом очень неудобно)

Сергей0308
28.03.2024, 19:52
Поддерживаю, очень не хватает такого инструмента (копипастом очень неудобно)

Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?

Dimensy
28.03.2024, 21:03
Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?

нет, потому что непонятно в каком порядке они будут обходится по кнопке ALT. А постоянно грузить программу в прибор и проверять - это как-то не комильфо

1exan
29.03.2024, 04:58
Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?

Как я понял, на очередность как раз влияет разница "по высоте в слое" элементов ввода

ProRus
01.04.2024, 13:23
Подскажите как число с плавающей запятой состоящее из 15 цифр разделить на три числа по 5 цифр и превратить в целочисленное?
Например имею число 123456789123456, хочу его разделить на 12345, 67891, 23456.
Такое возможно?
На Python такое получается на раз, в Owen Logic не выходит.
74887
float32 вообще в пр102 32 бита?
Может на ST такой фокус пройдет?

petera
01.04.2024, 13:41
Подскажите как число с плавающей запятой состоящее из 15 цифр разделить на три числа по 5 цифр и превратить в целочисленное?
Например имею число 123456789123456, хочу его разделить на 12345, 67891, 23456.
Такое возможно?
На Python такое получается на раз, в Owen Logic не выходит.
74887
float32 вообще в пр102 32 бита?
Может на ST такой фокус пройдет?
Не дурите голову, в ОЛ используется Float (IEEE754)

О каких 15 знаках может идти речь?
Точность переменной с плавающей точкой IEEE754 (для мантиссы отводится всего 23 бита из 32) всего лишь 7 цифр, даже неважно где будет стоять запятая, т.е.

0.ххххххх
х.хххххх
хх.ххххх
ххх.хххх
хххх.ххх
ххххх.хх
хххххх.х
ххххххх

таким образом всего 9 999 999

EFrol
01.04.2024, 14:09
Подскажите как число с плавающей запятой состоящее из 15 цифр разделить на три числа по 5 цифр и превратить в целочисленное?
Например имею число 123456789123456, хочу его разделить на 12345, 67891, 23456.
Такое возможно?
На Python такое получается на раз, в Owen Logic не выходит.
74887
float32 вообще в пр102 32 бита?
Может на ST такой фокус пройдет?

Да мантисса этого числа займет 46 бит. Если есть желание Вы можете представить это число как два 32-битных, например:
28744 * 232 + 2249167232 = 123456789123456
Далее воспользоваться макросом https://owen.ru/forum/showthread.php?t=26216&p=431974&viewfull=1#post431974

74891

ProRus
01.04.2024, 14:11
в итоге то что, в ОЛ не получилось, где скрин, что выходит вместо нужного

74893
74895

ProRus
01.04.2024, 14:13
Не дурите голову, в ОЛ используется Float (IEEE754)

О каких 15 знаках может идти речь?
Точность переменной с плавающей точкой IEEE754 (для мантиссы отводится всего 23 бита из 32) всего лишь 7 цифр, даже неважно где будет стоять запятая, т.е.

0.ххххххх
х.хххххх
хх.ххххх
ххх.хххх
хххх.ххх
ххххх.хх
хххххх.х
ххххххх

таким образом всего 9 999 999
Понял, пошел изучать мат. часть... :)
Спасибо!

ProRus
01.04.2024, 14:14
Да мантисса этого числа займет 46 бит. Если есть желание Вы можете представить это число как два 32-битных, например:
28744 * 232 + 2249167232 = 123456789123456
Далее воспользоваться макросом https://owen.ru/forum/showthread.php?t=26216&p=431974&viewfull=1#post431974

74891

Спасибо за подсказку!

capzap
01.04.2024, 14:19
74893
74895

а теперь повторите результат в питоне, приведя число действительно к float32 74898

capzap
01.04.2024, 16:15
да там не про float, зачем ProRus его приплел, непонятно

потому что с целочисленными шансов еще меньше 74900, даже не повторить первую часть

Валенок
01.04.2024, 16:19
Да там не 32 бита, а какой-то long
нету ж точки после 2-й шестерки

Traveller
25.04.2024, 19:18
Доброго времени суток коллеги!
Сейчас делаю один проект и отрабатываю один алгоритм, суть состоит в том что мне нужно некую в некотором плане хаотичную последовательность импульсов идущую с частотой порядка 2-5 Гц. разделять на минимальные и максимальные значения этой частоты + выделять среднее значение, в принципе я макрос этот сваял как сумел один макрос взял из базы и он как бы работает, в режиме отладки, т.е. если я руками задаю ему числа, он их селектирует по нужным критериям, но вот если я его вставляю в программу и запускаю ее в режиме симулятора, то на выходах этого макроса значки бесконечности, т.е. макрос не работает, что я делаю не так?
Ну и собственно саму тестовую программку выкладываю
https://owen.ru/forum/attachment.php?attachmentid=75427&stc=1&d=1714061798
https://owen.ru/forum/attachment.php?attachmentid=75428&stc=1&d=1714061809
Сама программка
https://owen.ru/forum/attachment.php?attachmentid=75429&stc=1&d=1714061866

kondor3000
25.04.2024, 19:57
Доброго времени суток коллеги!
Сейчас делаю один проект и отрабатываю один алгоритм, суть состоит в том что мне нужно некую в некотором плане хаотичную последовательность импульсов идущую с частотой порядка 2-5 Гц. разделять на минимальные и максимальные значения этой частоты + выделять среднее значение, в принципе я макрос этот сваял как сумел один макрос взял из базы и он как бы работает, в режиме отладки, т.е. если я руками задаю ему числа, он их селектирует по нужным критериям, но вот если я его вставляю в программу и запускаю ее в режиме симулятора, то на выходах этого макроса значки бесконечности, т.е. макрос не работает, что я делаю не так?


У вас в первом цикле, происходит деление на 0 и в макросе в Max и Avg записывается бесконечность, что логично 75430
Достаточно было включить проект по шагам и всё видно. Сделайте задержку на входе макроса или не делите на 0.

Traveller
25.04.2024, 20:15
У вас в первом цикле, происходит деление на 0 и в макросе в Max и Avg записывается бесконечность, что логично 75430
Достаточно было включить проект по шагам и всё видно.Странно, в режиме отладки самого макроса, такого не было, хотя там тоже ноль присутствовал, ну да ладно, значит нужно устранять эту лажу, что по моему не так сложно... :) Большое спасибо за подсказку!!! :)

Сергей0308
25.04.2024, 20:16
Так какой смысл, велосипед изобретать, тем более если он не получается, в смысле, на форуме много раз выкладывали макросы экстремумов и расчёта среднего значения, например среднее за период или среднее скользящим окном.

Traveller
25.04.2024, 20:24
Так какой смысл, велосипед изобретать, тем более если он не получается, в смысле, на форуме много раз выкладывали макросы экстремумов и расчёта среднего значения, например среднее за период или среднее скользящим окном.Мне легче самому сделать, или вопрос здесь задать, чем перелопачивать весь форум в поисках простого ответа, там более что усреднить данные я и без помощи форума могу...
И вообще у вас по делу есть что сказать, или вы снова тут решили интеллект свой продемонстрировать? :)
И да можете не продолжать задачка уже решена, все Ок!

bayk
25.04.2024, 23:08
Народ! под вечер очень туплю! мне нужен энергонезависимый таймер (счетчик) с обратным отсчетом в минутах. мне надо запустить его по поджатой энергонезависимой переменной, и он должен начать обратный отсчет в минутах до окончания (желательно чтоб показывал сколько осталось) но если пропадет питание, а потом снова появится он должен продолжить считать откуда остановился. а если переменная будет снята - сбросится.

Так какой смысл если сможешь загляни в почту эту задачу тебе подробно там описал

RomanKk
25.04.2024, 23:57
Установил последнюю версию ОЛ, в библиотеке макросов нет описания макросов, хотя раньше были. Баг, глюк или описания убрали?

СергейПалехов
26.04.2024, 09:50
Установил последнюю версию ОЛ, в библиотеке макросов нет описания макросов, хотя раньше были. Баг, глюк или описания убрали?

Здравствуйте! Описание макросов можно посмотреть в Онлайн базе менеджера компонентов. В последней версии OwenLogic(2.6.348.0) данная функция доступна.
Рdf-описания макросов из онлайн базы можно скачать и хранить на ПК.
С уважением, старший инженер технической поддержки, Палехов С.А.