Просмотр полной версии : разные вопросы новичка
Страницы :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[
15]
нет, без привязки к номеру насоса. только блокировка одновременного запуска.
Появилось условие запуска сразу двух насосов. Сначала запустился один с наименьшей наработкой, через время Т - второй.
на картинке упрощенная программа
Подскажите, в чем может быть ошибка в программе макроса?
переменные P1_start и P2_Start должны запускать c интервалом в 5 сек (задается отдельно), но фактически они запускаются только в разные циклы.
Если исходить из этого, первого Вашего вопроса, то можно так
74325
Если исходить из этого, первого Вашего вопроса, то можно так
74325
да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2
да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2
Тогда где счетчики моточасов?
Тогда где счетчики моточасов?
Полный макрос в картинку не влезет. Сделал упрощенную программу для разбора моей проблемы
да, но у Вас очередность запуска фиксированная - 1, потом 2. У меня насосы запускаются по наработки и их может быть больше 2
Ну так Вас и просили изложить все условия, Вы задали вопрос, выложили схему, оказалось вопрос несколько иной, и схема "упрощенная".
Из нее виден только один сигнал пуск, флага приоритета ( или номера разрешенного к пуску) насоса нет. Как и
Тогда где счетчики моточасов?
На форуме очень много тем и обсуждений по ротации насосов, поищите. Наверняка найдете нужное решение.
Ну так Вас и просили изложить все условия, Вы задали вопрос, выложили схему, оказалось вопрос несколько иной, и схема "упрощенная".
Из нее виден только один сигнал пуск, флага приоритета ( или номера разрешенного к пуску) насоса нет. Как и
На форуме очень много тем и обсуждений по ротации насосов, поищите. Наверняка найдете нужное решение.
забудьте про ротацию. Конкретно тот пример - почему игнорируется блокировка?
74326
Так Вы выложите эту часть в виде отдельного проекта, или макроса. Или кто то должен вручную рисовать, чтоб проверить?
AlexandrGr
13.03.2024, 17:59
У меня насосы запускаются по наработке
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?
Так Вы выложите эту часть в виде отдельного проекта, или макроса. Или кто то должен вручную рисовать, чтоб проверить?
https://disk.yandex.ru/d/wMALoZHdprK2EA
OWEN Logic v2.6.345.0
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?
Это уже другая тема
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?
Как вариант - можно сделать два значения наработки: одно (с возможностью обнуления) - собственно для учёта, другое (редактируемое) - для ротации
А если насос ставится новый вместо сгоревшего. Что делаете с наработкой?
Макрос ротации насосов 2 шт.
https://owen.ru/forum/showthread.php?t=30327
https://disk.yandex.ru/d/wMALoZHdprK2EA
OWEN Logic v2.6.345.0
И пожалуйста, чтоб не было непоняток, условия включения-выключения выходов.
И пожалуйста, чтоб не было непоняток, условия включения-выключения выходов.
условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic
условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic
При каких условиях должен работать P1_start?
При каких условиях должен работать P2_start?
При каких условиях должен работать P1_start?
При каких условиях должен работать P2_start?
Коллеги, зачем вам условия? Здесь просто "булевская" логика и программа не работает. Может расположение переменных не так, может ещё какие-то нюансы которые я не знаю
Коллеги, зачем вам условия? Здесь просто "булевская" логика и программа не работает. Может расположение переменных не так, может ещё какие-то нюансы которые я не знаю
Когда Вы изложите условия или хотя бы "как должна работать программа" по Вашей логике? Тогда мы сможем указать на нюансы.
условие - переменная start и невозможность одновременной активации P1_start и P2_start.
Не надо переписывать логику. Мне интересно почему моя программа не работает, что бы в дальнейшем не допускать ошибок. Или тут проблема в компиляторе Logic
Проблема в том, что вы все переменные сделали энергонезависимыми. А зачем вы это сделали? Если не менять логику, то у вас включится второй выход и через 5 секунд добавится первый. Так и должно быть?
Блин, ну как зачем? Вы хотите чтоб одновременно не включались вообще или запуск разрешен, но с задержкой 5 сек., хотите чтоб приоритет был, у какого? Либо при каждом следующем включении попеременно включались? Вкл-выкл в течении менее5 сек. вариантов масса. То что у Вас , и не меняя логики , как Вы хотели, включится второй выход, через 5 сек 1-й. и при каждом включении так же будет . Я уж не спрашиваю про условия пуска. Поставьте л.з. Но этот вариант не будет отличаться от того что раньше рисовал Вам. Только сложнее.
74327
Вероятно Вы хотели что то типа счетчика сделать? N_start? Но это не так делается. Гадать сложно.
Проблема в том, что вы все переменные сделали энергонезависимыми. А зачем вы это сделали? Если не менять логику, то у вас включится второй выход и через 5 секунд добавится первый. Так и должно быть?
Да. В данном случае именно это.
Про л.з. попробую уже завтра.
Спасибо!
Сергей0308
13.03.2024, 19:34
На форуме была подобная тема(если правильно понял вашу проблему), в смысле, если включаются одновременно более одного насоса(компрессора), точнее, подаются сигналы на запуск, то первый запускался сразу, а остальные по очереди, с определённым приоритетом и задержкой, чтобы снизить суммарный пусковой ток, Вы такой алгоритм хотите?
Короче, я много разных вариантов предлагал, вот один из них:
74329
Здравствуйте. Возник вопрос касательно чтения значения мощности с счетчика 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 разрядного числа. Это удобно делать и проверять сразу. Поэтому у меня этого нет.
Блин, ну как зачем? Вы хотите чтоб одновременно не включались вообще или запуск разрешен, но с задержкой 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.
Добрый день! Уважаемые комрады. Нужна помощь в программировании ПР100. Подскажите пожалуйста каким образом настроить переменную на аналоговый вход в дискретный режим, при котором напряжение логической единицы 4.5в, а логического нуля поставить 2В.
А так не прокатывает?
74470
shev1975
19.03.2024, 01:23
Простите за глупый вопрос, попытался запустить симуляцию ФБ, и ничего не получил. Вроде все сделал как на видео с ОФ канала на Ютуб. Версия 2.6.346.0
74484
Простите за глупый вопрос, попытался запустить симуляцию ФБ, и ничего не получил. Вроде все сделал как на видео с ОФ канала на Ютуб. Версия 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 сама драйвер найдет или его надо устанавливать.
Здравствуйте. Подскажите пожалуйста, не получается понять в какую сторону двигаться.
Имеется инкрементальный энкодер, который измеряет длину, подключен на быстрые входы(FI1, FI2) к реле ПР205. К дискретному входу I3 подключена кнопка без фиксации.
Необходимо записать значение количества импульсов энкодера в переменную "Кол-во импульсов №1" при нажатии на кнопку.
При повторном нажатии на кнопку записать новое значение в переменную "Кол-во импульсов №2" и т.д.
Есть ли возможность вывести на экран информацию в виде:
Нажатие 1 — 1267 импульсов
Нажатие 2 — 2430 импульсов
...
Нажатие N — 76395 импульсов
Логика подсказывает, что нет необходимости каждый раз создавать новую переменную, а добавлять новое значение в текстовое поле после нажатия. А как это реализовать непонятно.
74594
74595
Во вложении тестовый файл.
Предлагаю реализовать FIFO-буфер:
74598
Большое спасибо! Работает
Newcomer
22.03.2024, 13:24
Добрый день
На экране ПР200 создано 6 строк. Какая кнопка используется для перемещения по строкам ?
Это вопрос чьего-то теста на знание ОВЕНа?
Вариант ответа с одной кнопкой не подходит.
Newcomer
22.03.2024, 14:25
Это вопрос чьего-то теста на знание ОВЕНа?
Вариант ответа с одной кнопкой не подходит.
И какая это кнопка ?
Newcomer
22.03.2024, 15:03
В режиме отображения для перехода по строкам используются кнопки что на картинке.
Какие кнопки используются для перехода между строками в режиме редактирование в РЭ не написано.
При входе в режим редактирования попадаю в первую строку экрана и дальше не могу никуда перейти.
У меня кнопка Стрелка вниз используется для перехода между экранами. Эта же кнопка штатно предназначена для перехода между строками экрана в режиме отображения.
В режиме редактирования по строкам переходы НЕ работают.
Нужно прокрутить экран до нужной строки кнопками Вверх и Вниз, а потом через SEL редактировать.
А чтобы продолжить навигацию по строкам надо выйти из режима редактирования (ESC или OK).
Newcomer
22.03.2024, 15:53
В режиме редактирования по строкам переходы НЕ работают.
Нужно прокрутить экран до нужной строки кнопками Вверх и Вниз, а потом через SEL редактировать.
Экран до нужной строки прокручивается в режиме просмотра ? Это сколько же придется переключаться из режима в режим что бы отредактировать все строки.
Подскажите, пожалуйста - можно ли задать максимальное значение "индикатора выполнения" на экране не статично, а равное переменной?
Т.е. есть переменная со значением 10000, индикатор должен отображать значения в пределах 0-10000
Подскажите, пожалуйста - можно ли задать максимальное значение "индикатора выполнения" на экране не статично, а равное переменной?
Т.е. есть переменная со значением 10000, индикатор должен отображать значения в пределах 0-10000
Лучше отмасштабировать значение выводимой переменной.
Допустим, что у нас индикатор отображает ValShow, у которого минимальное = 0, а максимальное = 100.
Нам известно фактическое максимальное ValMax и значение ValOut, которое надо отмасштабировать в ValShow.
Тогда самый простой способ:
74609
Королев Кирилл
22.03.2024, 16:48
Экран до нужной строки прокручивается в режиме просмотра ? Это сколько же придется переключаться из режима в режим что бы отредактировать все строки.
Если на экране находятся несколько доступных для редактирования элементов, то переходить между ними можно по клавише SEL:
74611
Для пролистывания именно строк нужно использовать стрелки
Newcomer
22.03.2024, 17:31
Если на экране находятся несколько доступных для редактирования элементов, то переходить между ними можно по клавише SEL:
74611
Для пролистывания именно строк нужно использовать стрелки
Пролистывание строк экрана при помощи стрелок возможно только в режиме просмотра.
Пролистывание строк при помощи стрелок возможно только в режиме просмотра.
Да. Верно.
Newcomer
22.03.2024, 17:40
Да. Верно.
А как определить в каком режиме находишься, просмотр или редактирование ?
А как определить в каком режиме находишься, просмотр или редактирование ?
Кажется, редактируемое значение мигает в режиме редактирования.
Предлагаю реализовать FIFO-буфер:
74598
А подскажите - можно ли обнулить эти переменные при поступлении доп. импульса? Все счётчики с входом R работают только с булевыми значениями
Допустим, что у нас индикатор отображает ValShow, у которого минимальное = 0, а максимальное = 100.
Нам известно фактическое максимальное ValMax и значение ValOut, которое надо отмасштабировать в ValShow.
Тогда самый простой способ:
74609
Спасибо
Newcomer
22.03.2024, 18:13
т
Кажется, редактируемое значение мигает в режиме редактирования.
Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит. Параметр t предпр редактируется, а к остальным по SEL перейти не получается.
Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит.
Да. Я тоже не сразу привык. Поэтому вторую строчку использую для комментария, чтобы после редактирования нажимать сразу OK и далее листать до следующего параметра. Иногда первая строчка - наименование, вторая - единица измерения и рядом значение.
Newcomer
22.03.2024, 18:23
Да. Я тоже не сразу привык. Поэтому вторую строчку использую для комментария, чтобы после редактирования нажимать сразу OK и далее листать до следующего параметра. Иногда первая строчка - наименование, вторая - единица измерения и рядом значение.
Если после редактирования нажать OK, то произойдет выход из режима редактирования. И зачем это надо ?
Если после редактирования нажать OK, то произойдет выход из режима редактирования. И зачем это надо ?
Чтобы нажав дважды стрелочку вниз перейти к следующему параметру.
Newcomer
22.03.2024, 18:40
Кому должен? Из режимов редактирования традиционно есть 2 выхода - с принятием значения и без. Как бы не понять этого при наличии ESC и OK нужно быть очень отстранённым.
С выходом из режима редактирования проблем нет. Проблема в переходе к редактирования следующего параметра на том же экране.
Newcomer
22.03.2024, 18:55
Какая проблема?
По SEL нет перехода к редактированию следующего параметра.
т
Вот человек мучается сейчас. Жмет SEL, заходит в режим редактирования, мигает первый параметр. Отредактировал первый параметр, жмет SEL. Параметр должен сохранится и должен произойти переход к редактированию следующего параметра, а этого не происходит. Параметр t предпр редактируется, а к остальным по SEL перейти не получается.
Перейти можно только к следующему редактируемому параметру на отображаемых в данный момент строках (2шт), т.е. от "t предпр" по SEL перейти к "Тпрогр" или "Рразр" точно не получится
Здравствуйте. Я только начинаю разбираться в данное среде, потому надеюсь на понимание. У меня возник вопрос касательно сетевых переменных, а именно их сброса. У объекта, с которым я общаюсь по rs485 есть регистры, которые мне нужно перезаписывать. При начале работы логики ПР в регистр записываются нули, так как еще не сработали триггеры на запись значений в регистры, что портит работу алгоритма, а также из-за постоянной перезаписи регистра объект зависает на время от 5 секунд до нескольких минут. Видел в документации, что у сетевых переменных можно делать запись в регистры по команде переменной. Я реализовал данный вариант, но как показала практика, запись все равно происходит, что с моей стороны кажется странным при наличии запрета записи. В связи с этим вопрос, как запретить запись значения в регистр если значение на входе не поменялось или реализовать как-то интервально?
Все сетевые переменные энергонезависимые и они сохраняют своё значение при выключении устройства. Соответственно при запуске они (значения) будут восстановлены на те, что были в момент выключения.
После загрузки ПР и запуска прошивки можно по очереди обновить значения переменных, требующих корректировки.
kondor3000
26.03.2024, 12:20
Здравствуйте. Я только начинаю разбираться в данное среде, потому надеюсь на понимание. У меня возник вопрос касательно сетевых переменных, а именно их сброса. У объекта, с которым я общаюсь по rs485 есть регистры, которые мне нужно перезаписывать. При начале работы логики ПР в регистр записываются нули, так как еще не сработали триггеры на запись значений в регистры, что портит работу алгоритма, а также из-за постоянной перезаписи регистра объект зависает на время от 5 секунд до нескольких минут. Видел в документации, что у сетевых переменных можно делать запись в регистры по команде переменной. Я реализовал данный вариант, но как показала практика, запись все равно происходит, что с моей стороны кажется странным при наличии запрета записи. В связи с этим вопрос, как запретить запись значения в регистр если значение на входе не поменялось или реализовать как-то интервально?
Так работать не будет, надо не запись запрещать ( разрешать), а переменные изменять, когда вам надо.
Например по условию, по биту, по времени или инициализация при включении питания. Инициализация может быть 0 или заранее заданным числом.
Подскажите, пожалуйста - столкнулся с проблемой определения импульса для записи значений в переменные "Длина"
Импульсы приходят с энкодера, который измеряет длину. Через определенную длину срабатывает автоматика отрезного механизма продолжительностью около 10 секунд.
На тестовых подключениях, где срабатывание автоматики я эмулировал нажатием кнопки без фиксации - все работает замечательно, таким методом(спасибо EFrol'у):
74772
Но, как оказалось - при включении отрезного механизма идёт не один импульс, а целый пакет импульсов общей продолжительностью 10 секунд.
В результате каждый следующий импульс обнуляет показания длины и я не вижу предыдущего значения - всё забивается нулями.
Победить получилось, используя FTRIG вместо RTRIG, т.е. по заднему фронту последнего импульса.
Можно ли как-то зафиксировать только первый импульс из пучка, сохранить в памяти значение длины, а затем подождать 15 секунд и записать значение в переменную?
Один пропускает - следующий через 15 сек:
74777
Импульс формируется при паузе между входными импульсами более 1 секунды, т.е. в конце пачки:
74778
Если заменить FTRIG на RTRIG, то наоборот фиксирует начало пачки.
Сергей0308
27.03.2024, 20:55
Один пропускает - следующий через 15 сек:
74777
Импульс формируется при паузе между входными импульсами более 1 секунды, т.е. в конце пачки:
74778
Если заменить FTRIG на RTRIG, то наоборот фиксирует начало пачки.
Вот здесь, в посте #3526 макрос выкладывал для разруливания одновременного запуска 8 устройств: https://owen.ru/forum/showthread.php?t=26216&page=353
В смысле на выход пропускается первый импульс, последующие импульсы пройдут не ранее минимального периода следования, настраивается в свойствах макроса, вроде, как Вы хотите!
Можно использовать любой вход-выход(с одинаковым номером).
Подскажите - можно ли вывести на экран значение активного таймера TOF?
Я задаю с экрана в него значение, например 15000 мс.
Подаю импульс на вход, запускается таймер 100...200...850...мс
Как вывести/записать в переменную это значение (850) на экран?
74800
74801
Подскажите - можно ли вывести на экран значение активного таймера 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
При симуляции 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
Вроде в OWEN Logic всё логично, но есть не логичные моменты.
На экране есть несколько элементов "Ввод/вывод (int/float)" и "динамический текст". Элементы добавлялись в разное время.
При работе прибора и нажатии на экране кнопки "SEL" редактирование элементов производится не по порядку сверху-вниз, а как-то неочевидно:
74812
В мануале и настройках элементов параметра "приоритет" или "порядок" нет. Как сделать, чтобы элементы выбирались по очереди сверху-вниз?
При симуляции 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
Дополним описание в справке по этому поводу
Порядок выбора элементов обусловлен их положением в меню "компоненты экрана". Можно перетаскивать элементы для изменения порядка выбора.
74823
Дополним описание в справке по этому поводу
Спасибо, оказывается порядок этих элементов "снизу вверх" :)
Порядок выбора элементов обусловлен их положением в меню "компоненты экрана". Можно перетаскивать элементы для изменения порядка выбора.
А для ПР200 что-то похожее можно организовать?
А для ПР200 что-то похожее можно организовать?
Поддерживаю, очень не хватает такого инструмента (копипастом очень неудобно)
Сергей0308
28.03.2024, 19:52
Поддерживаю, очень не хватает такого инструмента (копипастом очень неудобно)
Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?
Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?
нет, потому что непонятно в каком порядке они будут обходится по кнопке ALT. А постоянно грузить программу в прибор и проверять - это как-то не комильфо
Не понял юмора, в смысле, Вы копипастом как сможете изменить порядок(очерёдность) выбора переменных(элементов) в ПР200?
Как я понял, на очередность как раз влияет разница "по высоте в слое" элементов ввода
Подскажите как число с плавающей запятой состоящее из 15 цифр разделить на три числа по 5 цифр и превратить в целочисленное?
Например имею число 123456789123456, хочу его разделить на 12345, 67891, 23456.
Такое возможно?
На Python такое получается на раз, в Owen Logic не выходит.
74887
float32 вообще в пр102 32 бита?
Может на ST такой фокус пройдет?
Подскажите как число с плавающей запятой состоящее из 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
Подскажите как число с плавающей запятой состоящее из 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
в итоге то что, в ОЛ не получилось, где скрин, что выходит вместо нужного
74893
74895
Не дурите голову, в ОЛ используется Float (IEEE754)
О каких 15 знаках может идти речь?
Точность переменной с плавающей точкой IEEE754 (для мантиссы отводится всего 23 бита из 32) всего лишь 7 цифр, даже неважно где будет стоять запятая, т.е.
0.ххххххх
х.хххххх
хх.ххххх
ххх.хххх
хххх.ххх
ххххх.хх
хххххх.х
ххххххх
таким образом всего 9 999 999
Понял, пошел изучать мат. часть... :)
Спасибо!
Да мантисса этого числа займет 46 бит. Если есть желание Вы можете представить это число как два 32-битных, например:
28744 * 232 + 2249167232 = 123456789123456
Далее воспользоваться макросом https://owen.ru/forum/showthread.php?t=26216&p=431974&viewfull=1#post431974
74891
Спасибо за подсказку!
74893
74895
а теперь повторите результат в питоне, приведя число действительно к float32 74898
да там не про float, зачем ProRus его приплел, непонятно
потому что с целочисленными шансов еще меньше 74900, даже не повторить первую часть
Да там не 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
Так какой смысл, велосипед изобретать, тем более если он не получается, в смысле, на форуме много раз выкладывали макросы экстремумов и расчёта среднего значения, например среднее за период или среднее скользящим окном.Мне легче самому сделать, или вопрос здесь задать, чем перелопачивать весь форум в поисках простого ответа, там более что усреднить данные я и без помощи форума могу...
И вообще у вас по делу есть что сказать, или вы снова тут решили интеллект свой продемонстрировать? :)
И да можете не продолжать задачка уже решена, все Ок!
Народ! под вечер очень туплю! мне нужен энергонезависимый таймер (счетчик) с обратным отсчетом в минутах. мне надо запустить его по поджатой энергонезависимой переменной, и он должен начать обратный отсчет в минутах до окончания (желательно чтоб показывал сколько осталось) но если пропадет питание, а потом снова появится он должен продолжить считать откуда остановился. а если переменная будет снята - сбросится.
Так какой смысл если сможешь загляни в почту эту задачу тебе подробно там описал
Установил последнюю версию ОЛ, в библиотеке макросов нет описания макросов, хотя раньше были. Баг, глюк или описания убрали?
СергейПалехов
26.04.2024, 09:50
Установил последнюю версию ОЛ, в библиотеке макросов нет описания макросов, хотя раньше были. Баг, глюк или описания убрали?
Здравствуйте! Описание макросов можно посмотреть в Онлайн базе менеджера компонентов. В последней версии OwenLogic(2.6.348.0) данная функция доступна.
Рdf-описания макросов из онлайн базы можно скачать и хранить на ПК.
С уважением, старший инженер технической поддержки, Палехов С.А.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot