Просмотр полной версии : разные вопросы новичка
Страницы :
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-описания макросов из онлайн базы можно скачать и хранить на ПК.
С уважением, старший инженер технической поддержки, Палехов С.А.
отличие работы ФуНкции и Функционального Блока.
Не могу понять почему функция в коде работает не корректно, передает результат условия наименьшего бита равного 1, прим: i1=1 & i2=1 sum=1. Подскажите пожалуйста.
function fN_bool_TO_int: udint;
var_input
i1 : bool;
i2 : bool;
end_var
var
sum : udint; //сумма
ft1 : bool; //триггер фронта i1
ft2 : bool; //триггер фронта i2
end_var
IF i1 & NOT ft1 THEN
ft1 := i1;
sum := sum + 1;
ELSIF NOT i1 & ft1 THEN
ft1 := i1;
sum := sum - 1;
ELSIF i2 & NOT ft2 THEN
ft2 := i2;
sum := sum + 2;
ELSIF NOT i2 & ft2 THEN
ft2 := i2;
sum := sum - 2;
END_IF
fN_bool_TO_int := sum;
end_function
Практически аналогичный код в ФБ работает без замечаний.
function_block fB_bool_TO_int
var_input
i1 : bool;
i2 : bool;
end_var
var_output
q : udint;
end_var
var
sum : udint; //сумма
ft1 : bool; //триггер фронта i1
ft2 : bool; //триггер фронта i2
end_var
IF i1 & NOT ft1 THEN
ft1 := i1;
sum := sum + 1;
ELSIF NOT i1 & ft1 THEN
ft1 := i1;
sum := sum - 1;
ELSIF i2 & NOT ft2 THEN
ft2 := i2;
sum := sum + 2;
ELSIF NOT i2 & ft2 THEN
ft2 := i2;
sum := sum - 2;
END_IF
q := sum;
end_function_block
В ФБ все переменные сохраняют свои значения до следующего вызова,
а в функции нет - инициализируются значениями по-умолчанию!
Свой ФБ Вы можете вызывать без передачи параметров, например (fB_bool_TO_int()),
значение входных останутся теми же, которые были при первом вызове.
А вот функция без параметров - ошибка.
В ФБ если алгоритм не изменил значения внутренних или выходных переменных,
то они тоже сохраняются между вызовами.
По аналогии с ООП ФБ - это объекты со своими полями.
novinky Собственно, в этом и отличие по их работе и есть.
Функция НЕ запоминает своё состояние ВООБЩЕ. Поэтому все переменные там НЕ сохраняются никогда и никак. Они обсчитываются только на момент вызова функции.
Это используется, когда надо сделать одни и те же вычисления для разных данных. Функции занимают память один раз: на сам код функции. В программе идёт обращение к одному и тому же коду из разных мест.
Функциональный Блок запоминает состояние всех переменных внутри. Но он будет потреблять больше памяти: на каждый экземпляр функционального блока будет выделяться своя отдельная память, так как разные экземпляры блоков могут иметь разное состояние внутренних переменных.
классическое объяснение про ПЛК гласит:
- ПЛК опрашивает входа и запоминает их значения,
- выполняет код,
- записывает результат в выхода.
Если i1=1 и i2=1, то согласно учению, ПР должен выдать sum=3
классическое объяснение про ПЛК гласит:
- ПЛК опрашивает входа и запоминает их значения,
- выполняет код,
- записывает результат в выхода.
Если i1=1 и i2=1, то согласно учению, ПР должен выдать sum=3
Кроме входов и выходов есть еще внутренняя память, которая может быть как статическая, так и динамически выделяемая для текущих расчетов.
Если i1=1, Затем i2=1, то почему сумму не выдает по последнему вызову?
Др несоответствие: если i1=1 и i2=1, получается не дойдя до END_IF выдает неверную сумму? Мне думается в др ПЛК результат будет = 3.
отличие работы ФуНкции и Функционального Блока.
Не могу понять почему функция в коде работает не корректно, передает результат условия наименьшего бита равного 1, прим: i1=1 & i2=1 sum=1. Подскажите пожалуйста.
Напишите
fN_bool_TO_int.0 := i1;
fN_bool_TO_int.1 := i2;
и будет вам счастье
OK спасибо, попробовали через несколько IF, получили желаемый результат через функцию.
Тогда почему:
1 - "сколько раз не вызывайте функцию, ft1 и ft2 будут всегда FALSE, поэтому 3 ни когда не получите, сперва один потом два"все же значение первого сложения не потерялась "внутренняя память" перед вычислением по 2 входу?
2 - в ФБ, "если всё сделано через ELSIF. Сработает только одно условие", по первому совпавшему условию не прекращает перебирать ELSIF и суммировать?
Напишите
fN_bool_TO_int.0 := i1;
fN_bool_TO_int.1 := i2;
и будет вам счастье
Можно больше строк пожалуйста, не понял в каком месте это написать и как связать с остальной частью
Можно больше строк пожалуйста, не понял в каком месте это написать и как связать с остальной частью
Пожалуйста
function fN_bool_TO_int: udint;
var_input
i1 : bool;
i2 : bool;
end_var
fN_bool_TO_int.0 := i1;
fN_bool_TO_int.1 := i2;
end_function
[CODE]
если бы не потерялось, то было бы 3, но Вы его так и не получили, а получали как раз двойку, потому что 0 + 2 будет 2 По мимо ft1 и ft2, sum тоже всегда равно нулю
IF i1 & NOT ft1 THEN
ft1 := i1;
sum := sum + 1;
ELSIF NOT i1 & ft1 THEN
ft1 := i1;
sum := sum - 1;
ELSIF i2 & NOT ft2 THEN
ft2 := i2;
sum := sum + 2;
ELSIF NOT i2 & ft2 THEN
ft2 := i2;
sum := sum - 2;
END_IF
fN_bool_TO_int := sum;
Почему тогда если ни одно условие не выполняется напр: i2 & ft2 предыдущее значение "2" сохраняется? Почему так же не переинициализируется и fN_bool_TO_int := sum; не возвращает "0"?
IF i1 & NOT ft1 THEN
ft1 := i1;
sum := sum + 1;
ELSIF NOT i1 & ft1 THEN
ft1 := i1;
sum := sum - 1;
ELSIF i2 & NOT ft2 THEN
ft2 := i2;
sum := sum + 2;
ELSIF NOT i2 & ft2 THEN
ft2 := i2;
sum := sum - 2;
END_IF
fN_bool_TO_int := sum;
Почему тогда если ни одно условие не выполняется напр: i2 & ft2 предыдущее значение "2" сохраняется? Почему так же не переинициализируется и fN_bool_TO_int := sum; не возвращает "0"?
Функция при каждом вызове выполняется как в первый раз, с чистого листа. Т.е., при каждом вызове у вас будет и sum и ft1 и ft2 равны нулю
AlexandrGr
05.05.2024, 08:43
sum и ft1 и ft2 равны нулю
Чисто теоретически там может быть что угодно. Что было в памяти то и будет. Другая функция может эту память переписать.
Подскажите реализацию несложного функционала (я в этом новичек, поэтому вопросы возникают даже на несложных задачах).
Есть щит управления и кнопка без фиксации (DO1 на ПР200), также к ПР подключена ESP32 в качестве мастера.
Суть задачи, кнопкой без фиксации запускать систему с задержкой 2с, статус должен отображатся в ESP. Выключить систему можно как той же кнопкой (также задержка 2с), так и с ESP. Если выключить с ESP, то повторное нажатие на кнопку опять запустит систему. То есть это старт/стоп системы как кнопкий на щите, так и с ESP.
Кстати, получилось вот такое, вроде работает, но все же на другие варианты хотелось бы посмотреть.
75539
Пожалуйста
function fN_bool_TO_int: udint;
var_input
i1 : bool;
i2 : bool;
end_var
fN_bool_TO_int.0 := i1;
fN_bool_TO_int.1 := i2;
end_function
Спасибо, очень Интересно, но не понятно. Могли бы весь код или разъяснить
чем Вы можете доказать что когда либо выполняется это условие в ФУНКЦИИ? Во второй цикл контроллера, когда i2 равно TRUE, ft2 будет равно FALSE. Эту аксиому Вам неоднократно здесь повторяли разные люди. Вот для наглядности видео
Это мое недопонимание тут разъяснили.
Функция при каждом вызове выполняется как в первый раз, с чистого листа. Т.е., при каждом вызове у вас будет и sum и ft1 и ft2 равны нулю
И я понял, Спасибо.
kondor3000
05.05.2024, 12:57
Подскажите реализацию несложного функционала (я в этом новичек, поэтому вопросы возникают даже на несложных задачах).
Есть щит управления и кнопка без фиксации (DO1 на ПР200), также к ПР подключена ESP32 в качестве мастера.
Суть задачи, кнопкой без фиксации запускать систему с задержкой 2с, статус должен отображатся в ESP. Выключить систему можно как той же кнопкой (также задержка 2с), так и с ESP. Если выключить с ESP, то повторное нажатие на кнопку опять запустит систему. То есть это старт/стоп системы как кнопкий на щите, так и с ESP.
Кстати, получилось вот такое, вроде работает, но все же на другие варианты хотелось бы посмотреть.
75539
Например так 75542
Подскажите реализацию несложного функционала (я в этом новичек, поэтому вопросы возникают даже на несложных задачах).
Есть щит управления и кнопка без фиксации (DO1 на ПР200), также к ПР подключена ESP32 в качестве мастера.
Суть задачи, кнопкой без фиксации запускать систему с задержкой 2с, статус должен отображатся в ESP. Выключить систему можно как той же кнопкой (также задержка 2с), так и с ESP. Если выключить с ESP, то повторное нажатие на кнопку опять запустит систему. То есть это старт/стоп системы как кнопкий на щите, так и с ESP.
Кстати, получилось вот такое, вроде работает, но все же на другие варианты хотелось бы посмотреть.
75539
Биты в сетевых переменных можно менять и считывать откуда хочешь:
75543
Спасибо, очень Интересно, но не понятно. Могли бы весь код или разъяснить
Это весь код. Может так будет понятно?
75545
Это весь код. Может так будет понятно?
Спасибо, эта таб ясна и понятна. Раньше встречал возврат функцией только в одну строку. Думал функция просто возвращает результирующее значение без присваивания самой функции значений. Тем более в нескольких строках fn.0, fn.1, .. ; и происходит как работа с массивом; и bool-ы записываются в функцию "с типом" udint
kondor3000
06.05.2024, 07:48
Спасибо, эта таб ясна и понятна. Раньше встречал возврат функцией только в одну строку. Думал функция просто возвращает результирующее значение без присваивания самой функции значений. Тем более в нескольких строках fn.0, fn.1, .. ; и происходит как работа с массивом; и bool-ы записываются в функцию "с типом" udint
Только не с массивом, это называется упаковка бит в маску, через точку. В регистр упаковывается до 16 бит. Аналогично можно распаковать биты из маски.
Виктор888
07.05.2024, 15:57
Здравствуйте. Есть например макрос, взятый из менеджера компонентов и если его размножить например на 5 штук, отредактировать любой из них, то все изменения переносятся на остальные. Почему так происходит и как этого избежать?
Виктор888 потому что это не 5 макросов а 5 экземпляров одного макроса. Если вам нужна немного другая логика работы макроса, надо сохранить его как новый макрос, дав ему новое имя и чтобы у него поменялся так же ID.
Сергей0308
07.05.2024, 16:12
Здравствуйте. Есть например макрос, взятый из менеджера компонентов и если его размножить например на 5 штук, отредактировать любой из них, то все изменения переносятся на остальные. Почему так происходит и как этого избежать?
После изменения макроса выбрать пункт "Сохранить как..." и подписать(дать имя), чтобы понятно было. Получится другой макрос.
Кстати, имя менять не обязательно!
Евгений Fishing
14.05.2024, 11:44
Подскажите как скачать программу с контроллера овен пр200?
МихаилГл
14.05.2024, 12:15
Подскажите как скачать программу с контроллера овен пр200?
Если поставщик не передал исходники или не хочет отдавать "интеллектуальную собственность" и ПРка вышла из строя, то попросите его передать проект созданный в мастере тиражирования. Если для редактирования и изменения, то выше ответили.
В инструкциях к ПРкам есть таблицы с описанием регистров Модбас.
Вопрос: сама ПРка (программа) не может к ним обращаться? К часикам например читать/писать?
Сергей0308
17.05.2024, 19:44
В инструкциях к ПРкам есть таблицы с описанием регистров Модбас.
Вопрос: сама ПРка (программа) не может к ним обращаться? К часикам например читать/писать?
Есть сервисные переменные: Секунды, Минуты, Часы, День, Месяц, Год - можно использовать их в программе, зачем там что-то "мудрить", тем более лезть в сетевые переменные?!
75831
Спасибо за информацию. А почему бы и не лезть, если надо?
Почитал про "гуляющие" часы, подумал можно ли их корректировать программно. В таблице регистров их увидел,а в лоджике не вижу. Вот и спрашиваю.
Странно. В 205-ой сервисных переменных у меня нет вообще. Но часы то там есть.
Жаль, что нельзя править значения. Тогда "Электронику 55" сделали бы сами.
Еще вопрос: есть ли вообще список по моделям где есть сервисные переменные, а где нет?
kondor3000
18.05.2024, 09:33
Спасибо за информацию. А почему бы и не лезть, если надо?
Почитал про "гуляющие" часы, подумал можно ли их корректировать программно. В таблице регистров их увидел,а в лоджике не вижу. Вот и спрашиваю.
Странно. В 205-ой сервисных переменных у меня нет вообще. Но часы то там есть.
Жаль, что нельзя править значения. Тогда "Электронику 55" сделали бы сами.
Еще вопрос: есть ли вообще список по моделям где есть сервисные переменные, а где нет?
Кто вам мешает, взять переменные времени, например с панели и их использовать в программе? В панели время идёт намного точнее.
В ПР205 можно назначить переменные времени и их использовать, но точность хода часов, судя по отзывам, как у всех ПР никакая.
Так а корректировать-то их нельзя?
АРТ.Кар 64
18.05.2024, 13:36
«Жизнь невозможно повернуть назад,
И время ни на миг не остановишь.
Как можно "корректировать" время ? На то оно и время.
"Корректировать" нельзя. А вот "остановить" можно.
Вспомните Шляпника и Мартовского Зайца. Чем "остановка "времени для них обернулась.
Насколько помнится Время можно только синхронизировать.
Что касается точности...На ПР 200-24 у меня "отставание" примерно 1-2 сек в сутки
https://disk.yandex.ru/d/8FAkMy6OqU0MWQ
Если вот на таком оборудовании "Время" и "Дату" поменять можно легко,то на ПР- ках ....Сложно сказать..
Впрочем еслм переменные "Секунды",минуты" ,"часы" и т.д. являются "редактируемыми"-то попробовать можно.
Добрый день. Прошу помощи, несколько дней уже ломаю голову, не пойму как решить проблему.
Описание: Управление осуществляется с помощью одного входа на который заведен gsm-модуль и дублирующая кнопка (по месту). Необходимо при первом нажатии активировать выход Q1, при втором, выход Q2. И так поочередно. Т.е. если сигнал поступил, всегда активен только один выход, если не вышло время и не сработал концевик. Задан интервал времени 40сек, на работу выходов, за это время должны сработать один из датчиков (концевики) и сбросить сигнал, повторным нажатием на кнопку возможно активировать только тот выход, на который не сработал датчик.
Сделал первый вариант, вроде бы все работало, но увеличил скорость работы двигателя и заготовка пролетела концевик, не сбросив цикл, а таймер еще не вышел, в общем последствия не очень!
76000
Переключение выходов сделал в макросе через D триггер с отрицанием одного из выхода. Второй вариант сделал так же через D триггер на каждый выход и вроде бы все хорошо. выхода переключаются, концевики сбрасывают цикл и таймеры. Но, при активации выхода Q1 и входа I2 происходит переключение на выход Q2 и ни как не могу это победить, концевики должны делать полный сброс с выходов
76001
А если во время пуска оба датчика не активны?
Добрый день. Прошу помощи, несколько дней уже ломаю голову, не пойму как решить проблему.
Описание: Управление осуществляется с помощью одного входа на который заведен gsm-модуль и дублирующая кнопка (по месту). Необходимо при первом нажатии активировать выход Q1, при втором, выход Q2. И так поочередно. Т.е. если сигнал поступил, всегда активен только один выход, если не вышло время и не сработал концевик. Задан интервал времени 40сек, на работу выходов, за это время должны сработать один из датчиков (концевики) и сбросить сигнал, повторным нажатием на кнопку возможно активировать только тот выход, на который не сработал датчик.
Сделал первый вариант, вроде бы все работало, но увеличил скорость работы двигателя и заготовка пролетела концевик, не сбросив цикл, а таймер еще не вышел, в общем последствия не очень!
Переключение выходов сделал в макросе через D триггер с отрицанием одного из выхода. Второй вариант сделал так же через D триггер на каждый выход и вроде бы все хорошо. выхода переключаются, концевики сбрасывают цикл и таймеры. Но, при активации выхода Q1 и входа I2 происходит переключение на выход Q2 и ни как не могу это победить, концевики должны делать полный сброс с выходов
А если так сделать?
76011
Вот еще аварийный стоп добавил
76012
Сергей0308
24.05.2024, 12:11
А если так сделать?
76011
Вот еще аварийный стоп добавил
76012
Для счётного входа Д-триггера не нужен детектор переднего фронта, он и так работает по фронту сигнала!
И, обычно для сигналов стоп и аварийный стоп используют размыкающиеся(нормально-замкнутые) контакты кнопки.
Для счётного входа Д-триггера не нужен детектор переднего фронта, он и так работает по фронту сигнала!
И, обычно для сигналов стоп и аварийный стоп используют размыкающиеся(нормально-замкнутые) контакты кнопки.
Без RTRIG запуск будет при отпускании кнопки
Аварийный стоп сделан на размыкание кнопки
Можно, конечно, еще поковыряться в алгоритме, можно и на ST написать.
Сергей0308
24.05.2024, 12:30
Без RTRIG запуск будет при отпускании кнопки
Аварийный стоп сделан на размыкание кнопки
Можно, конечно, еще поковыряться в алгоритме, можно и на ST написать.
Речь о работе Д-триггера, в смысле, если Вы уберёте детектор переднего фронта на счётном входе - разницы в его работе не будет!
По аварийному стопу, виноват, не заметил инвертор.
Вроде победил, немного переделал в макросе Д-триггер.
76013
Dimensy спасибо за два варианта, единственное что обратил внимание, если движение идет в одну сторону, например Q1 и срабатывает его концевик и если заготовка случайно его проскочит, то при повторном запуске, он опять начнет с него же., т.е. будет активен опять Q1.
Финальный вид. Добавил вход для оптического датчика присутствия, для включения звукового индикатора и останова работы на закрытие и вывод индикации на лампы при работе.
76014
Вроде победил, немного переделал в макросе Д-триггер.
Dimensy спасибо за два варианта, единственное что обратил внимание, если движение идет в одну сторону, например Q1 и срабатывает его концевик и если заготовка случайно его проскочит, то при повторном запуске, он опять начнет с него же., т.е. будет активен опять Q1.
Финальный вид. Добавил вход для оптического датчика присутствия, для включения звукового индикатора и останова работы на закрытие и вывод индикации на лампы при работе.
Что же это за концевик такой, что его проскочить можно?
Ладно, вот поправил
В качестве концевиков использовал индуктивные датчики бд-сенсор вби, пластины-актуаторы сделал около 5см шириной, но тяжелая заготовка на скорости примерно 10км/ч, инерции может хватить пролететь его, хотя и сделал динамическое торможение. Но лишний раз рисковать не охото. Еще раз спасибо за помощь!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot