PDA

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



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

kondor3000
27.09.2023, 09:18
В данном случае я крутил в ручную сам датчик и были эти показания в одну сторону.Это грубо говоря путь который прошел вал соединенный с датчиком в одну сторону.Пока технически нет возможности соединить вал датчика с валом двигателя чтобы проверить пока в ручную все пробую.Ремень между валами снят.

Если за один оборот вала показания 65535, то для получения частоты вращения (об/мин), надо снимать показания раз в секунду, разделить их на 65535
и уже их умножать на 60.
Или для большей точности, за 10 сек, разделить их на 65535 и умножить на 6.

Виталийй
27.09.2023, 10:22
Если за один оборот вала показания 65535, то для получения частоты вращения (об/мин), надо снимать показания раз в секунду, разделить их на 65535
и уже их умножать на 60.
Или для большей точности, за 10 сек, разделить их на 65535 и умножить на 6.

Сейчас схожу точно проверю.Чтобы быть 100% уверенным.
Не совсем понял про снятие показаний по времени.Вы предлагаете изменить - увеличить время опроса?По настройкам Пр102?
или выполнить в программе ?

Dimensy
27.09.2023, 10:26
Вот пожалуйста,все что есть. Ни слова как перевести угол в скорость нет.
- Датчик ЛИР-158Б-1-Т-256-05-ПИ-7 https://skbis.ru/catalog/rotary/incremental-rotary-encoders/lir-158b Документация на датчик https://skbis.ru/datasheet/lir-158b.pdf
- Модуль интерфейса ЛИР-915-485-СП2 https://skbis.ru/catalog/interface/modules/lir-915 Документация на сам модуль https://skbis.ru/products/lir-915/file/Описание%20версии%20с%20RS485%20Modbus%20RTU.pdf

Максимальная скорость вращения 5000 об/мин двигателя.

Так, судя по маркировке, энкодер выдает 256 импульсов на один оборот, а ЛИР-915 - это просто счетчик импульсов

Khedron
27.09.2023, 12:59
Так, судя по маркировке, энкодер выдает 256 импульсов на один оборот, а ЛИР-915 - это просто счетчик импульсов
Этот ЛИР просто относительный АВ-энкодер с нулевой меткой. Тут вопрос в том, что в регистрах выдаёт модуль интерфейса. Он же не просто количество импульсов выдаёт, он внутри себя (судя по даташиту) может имитировать абсолютный энкодер, т.к. в регистрах есть как относительная, так и абсолютная "координата?". Что под словом "координата" имеется в виду знает только производитель.
К слову, используется 32-битное значение количества импульсов, переполнения по 65535 не должно быть.
Полагаю, нужно записать перед стартом нули в 2 и 3 регистры (относительная координата). А потом считывать значение количества импульсов и делить на 256 (разрешение датчика). Получим количество оборотов в секунду/минуту/час (смотря как часто считываем). Отсюда можно даже посчитать угол поворота и расстояние чего он там меряет.
Еще проще - считать количество срабатываний нуль метки (Coils 0 в документации) в секунду/минуту. Это прям сразу обороты.

Сергей0308
27.09.2023, 13:18
Этот ЛИР просто относительный АВ-энкодер с нулевой меткой. Тут вопрос в том, что в регистрах выдаёт модуль интерфейса. Он же не просто количество импульсов выдаёт, он внутри себя (судя по даташиту) может имитировать абсолютный энкодер, т.к. в регистрах есть как относительная, так и абсолютная "координата?". Что под словом "координата" имеется в виду знает только производитель.
К слову, используется 32-битное значение количества импульсов, переполнения по 65535 не должно быть.
Полагаю, нужно записать перед стартом нули в 2 и 3 регистры (относительная координата). А потом считывать значение количества импульсов и делить на 256 (разрешение датчика). Получим количество оборотов в секунду/минуту/час (смотря как часто считываем). Отсюда можно даже посчитать угол поворота и расстояние чего он там меряет.
Еще проще - считать количество срабатываний нуль метки (Coils 0 в документации) в секунду/минуту. Это прям сразу обороты.

Тогда зачем энкодер? Дешевле и проще индуктивный(оптический) или датчик Холла поставить.

Виталийй
27.09.2023, 13:22
Этот ЛИР просто относительный АВ-энкодер с нулевой меткой. Тут вопрос в том, что в регистрах выдаёт модуль интерфейса. Он же не просто количество импульсов выдаёт, он внутри себя (судя по даташиту) может имитировать абсолютный энкодер, т.к. в регистрах есть как относительная, так и абсолютная "координата?". Что под словом "координата" имеется в виду знает только производитель.
К слову, используется 32-битное значение количества импульсов, переполнения по 65535 не должно быть.
Полагаю, нужно записать перед стартом нули в 2 и 3 регистры (относительная координата). А потом считывать значение количества импульсов и делить на 256 (разрешение датчика). Получим количество оборотов в секунду/минуту/час (смотря как часто считываем). Отсюда можно даже посчитать угол поворота и расстояние чего он там меряет.
Еще проще - считать количество срабатываний нуль метки (Coils 0 в документации) в секунду/минуту. Это прям сразу обороты.

Вот.Я изначально думал про счет 0 метки.Но производитель Лира сказал считать абсолютную величину.Толком не сказали почему,но боюсь что они добром так и не поняли что мне нужно.Потому что они и сами сказали,что не знают как мне все это перевести в обороты.

Виталийй
27.09.2023, 13:33
Тогда зачем энкодер? Дешевле и проще индуктивный(оптический) или датчик Холла поставить.

Так как лучше попробовать?Посоветуйте пожалуйста

Сергей0308
27.09.2023, 14:07
Так как лучше попробовать?Посоветуйте пожалуйста

Так Вам уже насоветовали, как дешевле и проще, в смысле, лучше: тахометр + индуктивный(оптический) или датчик Холла, всё! Я так понимаю Вам нужна скорость вращения, вот и будут Вам обороты в минуту! Зачем вся это катавасия мне пока совсем не понятно!

https://owen.ru/product/tx01rs

70515

Виталийй
27.09.2023, 14:31
Так Вам уже насоветовали, как дешевле и проще, в смысле, лучше: тахометр + индуктивный(оптический) или датчик Холла, всё! Я так понимаю Вам нужна скорость вращения, вот и будут Вам обороты в минуту! Зачем вся это катавасия мне пока совсем не понятно!

https://owen.ru/product/tx01rs

70515

Это все отлично.Только закупить я к сожалению ничего не могу и могу работать только с тем что есть.Поэтому этот вариант не подходит.

Виталийй
27.09.2023, 14:34
Если за один оборот вала показания 65535, то для получения частоты вращения (об/мин), надо снимать показания раз в секунду, разделить их на 65535
и уже их умножать на 60.
Или для большей точности, за 10 сек, разделить их на 65535 и умножить на 6.

Извиняюсь, ввел в заблуждение.За один оборот в районе 1024.70517
Это точно.
Если я правильно понимаю то 256 импульсов за 1 оборот вала двигателя должно быть, тогда получаем 256*4=1024 как раз и есть координата.
То есть на 1 импульс Лира есть 4 точки выходит.

AlexandrGr
27.09.2023, 14:42
Все просто. Читаете абсолютное значение. Через минуту - читаете еще раз. Разность значений делите на 1024 (256*4 - количество импульсов на оборот). Результат - количество оборотов в минуту.
Как делать запрос раз в минуту или 10 секунд или 1 секунду по модбас в ПР я не знаю.
Или читать достаточно часто, а скорость измерять по таймеру.

Сергей0308
27.09.2023, 14:45
Это все отлично.Только закупить я к сожалению ничего не могу и могу работать только с тем что есть.Поэтому этот вариант не подходит.

Хорошо, не Вы проект делали, не Вы это купили! Можно же проект взять(попросить) у ваших товарищей, кто это делал?
Гадать, что задумали товарищи из этого набора приборов - неразумно, в смысле, можно и танк собрать и самолёт, образно выражаясь!

kondor3000
27.09.2023, 14:51
Извиняюсь, ввел в заблуждение.За один оборот в районе 1024.
Это точно.
Если я правильно понимаю то 256 импульсов за 1 оборот вала двигателя должно быть, тогда получаем 256*4=1024 как раз и есть координата.
То есть на 1 импульс Лира есть 4 точки выходит.
По R_Trig, запоминаете показания через SEL и одновременно запускаете таймер на 1 или 10 сек, по окончании таймера, через F_Trig, запоминаете показания 2 раз.
Далее считаете разницу, делите на 1024 и умножаете на 60 (или 6). Получаете обороты в минуту.

Виталийй
27.09.2023, 15:16
Хорошо, не Вы проект делали, не Вы это купили! Можно же проект взять(попросить) у ваших товарищей, кто это делал?
Гадать, что задумали товарищи из этого набора приборов - неразумно, в смысле, можно и танк собрать и самолёт, образно выражаясь!

Стоп стоп проект я делал с 0 сам.По совету же здесь.Гораздо ранее задавал вопросы.Вы же мне подсказывали как сделать.

Виталийй
27.09.2023, 15:18
По R_Trig, запоминаете показания через SEL и одновременно запускаете таймер на 1 или 10 сек, по окончании таймера, через F_Trig, запоминаете показания 2 раз.
Далее считаете разницу, делите на 1024 и умножаете на 60 (или 6). Получаете обороты в минуту.

Сейчас попробую реализовать,что Вы написали.Огромное спасибо за советы.
Не совсем понимаю как это сделать.
вот что выходит.70520

kondor3000
27.09.2023, 18:42
Сейчас попробую реализовать,что Вы написали.Огромное спасибо за советы.
Не совсем понимаю как это сделать.
вот что выходит

Например так 70526 в работе 70527
Или так, с автоматическим перезапуском 70528

Сергей0308
27.09.2023, 20:15
Например так 70526 в работе 70527
Или так, с автоматическим перезапуском 70528

Так вроде писали, что диапазон счётчика 0-65535, при 5000 оборотах в минуту счётчик будет переполнен менее чем за 0,8 секунды, в смысле, мне кажется это надо учитывать, иначе будет лабуду показывать. И, даже если с этим моментом "разобраться", в смысле, учитывать переполнение счётчика, всё равно будет лабуду показывать, потому, что время надо для чтения показаний. Тогда для получения корректных показаний необходимо для показаний иметь метку времени, в смысле, знать время между измерениями. Короче, необходимый параметр(скорость вращения (об/мин)) проще вычислять в устройстве к которому подключен энкодер, а по сети передавать уже готовый результат, например использовать ПР103(ПР205).

kondor3000
27.09.2023, 20:22
Так вроде писали, что диапазон счётчика 0-65535, при 5000 оборотах в минуту счётчик будет переполнен менее чем за 0,8 секунды, в смысле, мне кажется это надо учитывать, иначе будет лабуду показывать. И, даже если с этим моментом "разобраться", в смысле, учитывать переполнение счётчика, всё равно будет лабуду показывать, потому, что время надо для чтения показаний. Тогда для получения корректных показаний необходимо для показаний иметь метку времени, в смысле, знать время между измерениями. Короче, необходимый параметр(скорость вращения (об/мин)) проще вычислять в устройстве к которому подключен энкодер, а по сети передавать уже готовый результат, например использовать ПР103(ПР205).
Не похоже на вас, обычно вы читаете. Используется ПР как мастер, читается 32 битная целочисленная переменная 2 регистрами. ТС выкладывал скрины несколько раз.
Про 65 тысяч разговор о другом был.

Сергей0308
27.09.2023, 20:51
Не похоже на вас, обычно вы читаете. Используется ПР как мастер, читается 32 битная целочисленная переменная 2 регистрами. ТС выкладывал скрины несколько раз.
Про 65 тысяч разговор о другом был.

Всё равно косяк будет, в смысле, переполнится через 14 часов и тогда лабуду покажет! Хорошо, это маленький косяк будет, в смысле, для товарища, и так сойдёт, а как выкручиваться с задержкой считывания, в смысле, она может плавать или тоже сойдёт плюс-минус лапоть, в смысле, за что боролись, на то и напоролись?! С таким энкодером можно измерять скорость с точностью до многих знаков после запятой, при передаче по сети значений счётчика эти потенциальные возможности исчезают, в смысле, лучше тахометр поставить с индуктивным датчиком и то точнее будет, для чего вся эта катавасия, чтобы никто не понял что разумные люди делали?

kondor3000
27.09.2023, 22:12
Всё равно косяк будет, в смысле, переполнится через 14 часов и тогда лабуду покажет! Хорошо, это маленький косяк будет, в смысле, для товарища, и так сойдёт, а как выкручиваться с задержкой считывания, в смысле, она может плавать или тоже сойдёт плюс-минус лапоть, в смысле, за что боролись, на то и напоролись?! С таким энкодером можно измерять скорость с точностью до многих знаков после запятой, при передаче по сети значений счётчика эти потенциальные возможности исчезают, в смысле, лучше тахометр поставить с индуктивным датчиком и то точнее будет, для чего вся эта катавасия, чтобы никто не понял что разумные люди делали?

Уже всё проверено, при переходе через 0, от 4294767296 до 200001 ( разница 400000) 70533 и от 0 до 400000 обороты считает одинаково правильно. 70532
А на счёт тахометра, тоже писал, но тут ничего не сделаешь, оборудование уже куплено. Поэтому работаем с тем что есть)

Виталийй
28.09.2023, 08:13
Уже всё проверено, при переходе через 0, от 4294767296 до 200001 ( разница 400000) 70533 и от 0 до 400000 обороты считает одинаково правильно. 70532
А на счёт тахометра, тоже писал, но тут ничего не сделаешь, оборудование уже куплено. Поэтому работаем с тем что есть)

Огромное спасибо за помощь.Сейчас все сделаю и пойду пробовать.Не ожидал,что будет рабочая дискуссия по вопросу как сделать лучше.Я уже ненароком подумал,что не ответите.

Виталийй
28.09.2023, 08:23
Всё равно косяк будет, в смысле, переполнится через 14 часов и тогда лабуду покажет! Хорошо, это маленький косяк будет, в смысле, для товарища, и так сойдёт, а как выкручиваться с задержкой считывания, в смысле, она может плавать или тоже сойдёт плюс-минус лапоть, в смысле, за что боролись, на то и напоролись?! С таким энкодером можно измерять скорость с точностью до многих знаков после запятой, при передаче по сети значений счётчика эти потенциальные возможности исчезают, в смысле, лучше тахометр поставить с индуктивным датчиком и то точнее будет, для чего вся эта катавасия, чтобы никто не понял что разумные люди делали?

Огромное спасибо за поддержку.Правда не ожидал,что дадите ответ.

Виталийй
28.09.2023, 13:09
Уже всё проверено, при переходе через 0, от 4294767296 до 200001 ( разница 400000) 70533 и от 0 до 400000 обороты считает одинаково правильно. 70532
А на счёт тахометра, тоже писал, но тут ничего не сделаешь, оборудование уже куплено. Поэтому работаем с тем что есть)

Объясните пожалуйста.Почему в симуляции программы работает только первый цикл,а остальные нет ?70550

kondor3000
28.09.2023, 13:48
Объясните пожалуйста.Почему в симуляции программы работает только первый цикл,а остальные нет ?

Если вы в эмуляции, то каждый цикл ( в течении 10 сек) вы вручную должны менять значения, например прибавлять по 100 000 - 200 000, если не меняете, то энкодер стоит. Обороты 0 или около 0.
Если вал крутится, то значения всё время меняются. Если стоит то не меняются.

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

Виталийй
28.09.2023, 14:08
Если вы в эмуляции, то каждый цикл ( в течении 10 сек) вы вручную должны менять значения, например прибавлять по 100 000, если не меняете, то энкодер стоит. Обороты 0 или около 0.
Если вал крутится, то значения всё время меняются. Если стоит то не меняются.

Понял,спасибо огромное не знал про симуляцию и один цикл.
Чтобы отправить данные на ИПП120 с ПР102.Взамен сетевой переменной Лира,ставлю переменную оборотов?7055970560
До этого ИПП оставался на значениях 999999 и все так и не снижался.

kondor3000
28.09.2023, 15:01
Понял,спасибо огромное не знал про симуляцию и один цикл.
Чтобы отправить данные на ИПП120 с ПР102.Взамен сетевой переменной Лира,ставлю переменную оборотов?7055970560
До этого ИПП оставался на значениях 999999 и все так и не снижался.

Опять 25, а сколько подавалось на вход то? Может у вас регистры не правильно стоят, старший и младший.
Вы это должны были проверить ещё месяц назад.

Виталийй
28.09.2023, 15:09
Опять 25, а сколько подавалось на вход то? Может у вас регистры не правильно стоят, старший и младший.
Вы это должны были проверить ещё месяц назад.

К сожалению,все было разобрано.Не было возможности в принципе что-то поделать.

meta11ist87
28.09.2023, 21:45
Как записать переменную в фб? Во вложении скриншот, сетевая переменная, которая задаётся либо с экрана ПР, либо через модбас.
В такой компоновке она не передаётся в фб таймера никак. Вроде работало раньше, но с каких то изменений в проекте перестало работать. Не понимаю почему.
https://drive.google.com/file/d/1CN0ashrd7CkLv-qVMfdjs7QRXvNI_pFu/view?usp=drive_link

kondor3000
28.09.2023, 22:25
Как записать переменную в фб? Во вложении скриншот, сетевая переменная, которая задаётся либо с экрана ПР, либо через модбас.
В такой компоновке она не передаётся в фб таймера никак. Вроде работало раньше, но с каких то изменений в проекте перестало работать. Не понимаю почему.
https://drive.google.com/file/d/1CN0ashrd7CkLv-qVMfdjs7QRXvNI_pFu/view?usp=drive_link

Что добавить скрин как "Вставить изображение" никак? нафига мне переходить по ссылке?
И программу (проект) можно добавить в расширенном режиме, если надо.

meta11ist87
29.09.2023, 01:06
Что добавить скрин как "Вставить изображение" никак? нафига мне переходить по ссылке?
И программу (проект) можно добавить в расширенном режиме, если надо.

В подписи "Причина редактирования" указано почему ссылка, а не изображение.
Сейчас вот загрузилось.

70571

kondor3000
29.09.2023, 08:35
В подписи "Причина редактирования" указано почему ссылка, а не изображение.
Сейчас вот загрузилось.



Вот сетевая привязана к экрану и записывает секунды в FB TON 70574
Версия Лоджика последняя. Наверно вы забыли секунды умножить на 1000 или привязать запись к Таймеру.

Виталийй
29.09.2023, 09:11
Опять 25, а сколько подавалось на вход то? Может у вас регистры не правильно стоят, старший и младший.
Вы это должны были проверить ещё месяц назад.

Абсолютно верно,поменял регистры местами и все заработало(честно даже сам не поверил).Вчера все попробовал итог получился вот такой по программе.Хочу выразить огромное человеческое спасибо Вам и Сергей0308 за помощь.Данные передаются на ИПП120 достоверно.Теперь нужны еще пару советов по программе.Я менял время таймера с 10 секунд на 1 секунду,соответственно коэффициент умножения делал 60 для 1 секунды как вы говорили.Было такое чувство по программе,что обновление данных было порядка 2-4 секунду и данные менялись с разной периодичностью. Именно такое было с 1 секундой и коэф 60.Как будто переполнение было,не успевал счетчик.Все скрины сделаю,о чем речь покажу сегодня чтобы было понимае о чем речь.
Есть еще момент по программе в симуляции после 1 цикла ввода данных в ручную на втором цикле он берет предыдущие данные и снова их делит и так по кругу,я так понимаю что так не должно быть.Я так понимаю есть ошибка в переменной где-то.Или все верно?
На сегодня план поставить ремни на двигатель,взять ручной тахометр и сравнить данные с ПР102 с фактическими с тахометра.70576

Вот поэтапно по программе циклы.Со второго цикла показания хз откуда он берет.Это последний скрин.7057770578705797058170582

kondor3000
29.09.2023, 14:17
Абсолютно верно,поменял регистры местами и все заработало(честно даже сам не поверил).Вчера все попробовал итог получился вот такой по программе.Хочу выразить огромное человеческое спасибо Вам и Сергей0308 за помощь.Данные передаются на ИПП120 достоверно.Теперь нужны еще пару советов по программе.Я менял время таймера с 10 секунд на 1 секунду,соответственно коэффициент умножения делал 60 для 1 секунды как вы говорили.Было такое чувство по программе,что обновление данных было порядка 2-4 секунду и данные менялись с разной периодичностью. Именно такое было с 1 секундой и коэф 60.Как будто переполнение было,не успевал счетчик.Все скрины сделаю,о чем речь покажу сегодня чтобы было понимае о чем речь.
Есть еще момент по программе в симуляции после 1 цикла ввода данных в ручную на втором цикле он берет предыдущие данные и снова их делит и так по кругу,я так понимаю что так не должно быть.Я так понимаю есть ошибка в переменной где-то.Или все верно?
На сегодня план поставить ремни на двигатель,взять ручной тахометр и сравнить данные с ПР102 с фактическими с тахометра.

Вот поэтапно по программе циклы.Со второго цикла показания хз откуда он берет.Это последний скрин.

У вас 2 скрин 9,5 секунд на таймере, а вы ещё не применили значение. Похоже вы просто не успеваете уложиться в 10 сек.
Установите 100 000, включите, и меняйте только первую цифру.1 на 2, 4, 5, 7, чтобы по разному прибавлять, то 100 тыс ( 582 оборота), то 200 тыс. (1170 оборотов)
У меня всё работает.
На скрине дошёл до 2 миллионов, по 100-200 тыс, последнее +200 тыс (1170 оборотов)70602

С 1 сек не знаю как будет вживую, надо смотреть как часто меняются цифры, и сделать время немного больше.

Виталийй
29.09.2023, 16:27
У вас 2 скрин 9,5 секунд на таймере, а вы ещё не применили значение. Похоже вы просто не успеваете уложиться в 10 сек.
Установите 100 000, включите, и меняй те только первую цифру.1 на 2, 4, 5, 7, чтобы по разному прибавлять, то 100 тыс ( 582 оборота), то 200 тыс. (1170 оборотов)
У меня всё работает.
На скрине дошёл до 2 миллионов, по 100-200 тыс, последнее +200 тыс (1170 оборотов)70602

С 1 сек не знаю как будет вживую, надо смотреть как часто меняются цифры, и сделать время немного больше.

Понял,спасибо попробую.

meta11ist87
29.09.2023, 22:36
Вот сетевая привязана к экрану и записывает секунды в FB TON 70574
Версия Лоджика последняя. Наверно вы забыли секунды умножить на 1000 или привязать запись к Таймеру.

Благодарю, видать я не знал что там время в мс задаётся.

Andry_EXO-Space
13.10.2023, 17:02
Здравствуйте!
подскажите пожалуйста, можно ли в функциональном блоке сделать переменную которая бы не уничтожалась после его выполнения, а сохраняла свое значение на протяжении рабочего цикла?

Сергей0308
13.10.2023, 17:18
Здравствуйте!
подскажите пожалуйста, можно ли в функциональном блоке сделать переменную которая бы не уничтожалась после его выполнения, а сохраняла свое значение на протяжении рабочего цикла?

В макросе можно использовать энергонезависимые переменные, правда они будут локальные.

Andry_EXO-Space
13.10.2023, 17:30
Вообще у меня затык - как реализовать цикл фор или вайл в Овен лоджик?
Те я хочу, ввести с экрана переменную, произвести ряд математических преобразований на ее основе (единожды), и что бы до следующего ввода эти преобразование не выполнялись ...
подскажите пожалуйста как это делается в блочно визуальном программировании!

Сергей0308
13.10.2023, 17:34
Вообще у меня затык - как реализовать цикл фор или вайл в Овен лоджик?
Те я хочу, ввести с экрана переменную, произвести ряд математических преобразований на ее основе (единожды), и что бы до следующего ввода эти преобразование не выполнялись ...
подскажите пожалуйста как это делается в блочно визуальном программировании!

Вот сумматор как пример:

70918

https://owen.ru/forum/showthread.php?t=13106&page=3

Andry_EXO-Space
13.10.2023, 17:37
Так тут сигналы с входов, я пытаюсь коррекцию графика реализовать вводом значений с экрана...

capzap
13.10.2023, 17:40
Здравствуйте!
подскажите пожалуйста, можно ли в функциональном блоке сделать переменную которая бы не уничтожалась после его выполнения, а сохраняла свое значение на протяжении рабочего цикла?

Наверное путаете с функцией или покажите что у Вас не сохраняется

kondor3000
13.10.2023, 17:40
Вообще у меня затык - как реализовать цикл фор или вайл в Овен лоджик?
Те я хочу, ввести с экрана переменную, произвести ряд математических преобразований на ее основе (единожды), и что бы до следующего ввода эти преобразование не выполнялись ...
подскажите пожалуйста как это делается в блочно визуальном программировании!

Вообще то для этого и сделали функции и Функц. блоки на ST, пример использования циклов тут https://owen.ru/forum/showthread.php?t=38453&page=10#93


Так тут сигналы с входов, я пытаюсь коррекцию графика реализовать вводом значений с экрана...

А здесь функция, зависимость температуры котла от уличной температуры, график по 10 точкам https://owen.ru/forum/showthread.php?t=35489&page=5

Dimensy
13.10.2023, 19:20
Вообще у меня затык - как реализовать цикл фор или вайл в Овен лоджик?
Те я хочу, ввести с экрана переменную, произвести ряд математических преобразований на ее основе (единожды), и что бы до следующего ввода эти преобразование не выполнялись ...
подскажите пожалуйста как это делается в блочно визуальном программировании!

Вам нужно провести преобразование экранной переменной или какой-то другой, используя экранную переменную, и эта другая переменная постоянно меняется, а вам нужно вычисление сделать только один раз? В общем, покажите формулу, что ли

Andry_EXO-Space
13.10.2023, 20:49
кажется я решил эту задачу.
вот проект "тест 1", https://disk.yandex.ru/d/NZiRHMRUFz9B8w посмотрите кто чем может пожалуйста. Там еще много надо доделывать, но главное после ввода с экрана разово происходит математическая обработка.
Сергей0308, спасибо!

Andry_EXO-Space
13.10.2023, 20:51
Вообще то для этого и сделали функции и Функц. блоки на ST, пример использования циклов тут https://owen.ru/forum/showthread.php?t=38453&page=10#93



А здесь функция, зависимость температуры котла от уличной температуры, график по 10 точкам https://owen.ru/forum/showthread.php?t=35489&page=5



Спасибо!!!

Dimensy
13.10.2023, 21:38
кажется я решил эту задачу.
вот проект "тест 1", https://disk.yandex.ru/d/NZiRHMRUFz9B8w посмотрите кто чем может пожалуйста. Там еще много надо доделывать, но главное после ввода с экрана разово происходит математическая обработка.
Сергей0308, спасибо!

А что вы делаете? Пытаетесь скомпенсировать погрешность показаний датчика Pt100?

Сергей0308
15.10.2023, 02:26
кажется я решил эту задачу.
вот проект "тест 1", https://disk.yandex.ru/d/NZiRHMRUFz9B8w посмотрите кто чем может пожалуйста. Там еще много надо доделывать, но главное после ввода с экрана разово происходит математическая обработка.
Сергей0308, спасибо!

Типичный пример, как не надо делать, в смысле, неужели нельзя датчик по человечьи подключить, чтобы температуру измерять с заявленной погрешностью(точностью), а не ± лапоть?!

В соседней теме что ли посмотрите, как можно по человечьи сделать:

https://owen.ru/forum/showthread.php?t=38492

melky
15.10.2023, 09:06
и будет потом человек удивляться, почему это на 8А и просто датчиках у него ± лапоть...

Oleg Berger
15.10.2023, 11:10
Пишу ФБ на ST. В ФБ входит цикл. Как (для отладки) запустить цикл пошагово, с просмотром промежуточных значений (каждую итерацию)? В режиме симулятора, еще до нажатия "пуск" выдается сразу полный результат работы цикла, шаги по циклам не даёт сделать. В Python, к примеру, я бы вставил после каждой итерации "print...". А здесь как?

kondor3000
15.10.2023, 11:20
Пишу ФБ на ST. В ФБ входит цикл. Как (для отладки) запустить цикл пошагово, с просмотром промежуточных значений (каждую итерацию)? В режиме симулятора, еще до нажатия "пуск" выдается сразу полный результат работы цикла, шаги по циклам не даёт сделать. В Python, к примеру, я бы вставил после каждой итерации "print...". А здесь как?

В Лоджике так нельзя, если вам надо отладить код пошагово, поставьте Codesys 2.3, отладьте код, а потом перенесёте в Лоджик.
ПО среды 2.3.9.41 , биб-ки и таргеты https://owen.ru/product/codesys_v2
Только учтите, тут ST полный, в отличие от урезанного в Лоджике.

А тут примеры использования циклов, как раз в Codesys 2.3 и в Лоджике https://owen.ru/forum/showthread.php?t=38453&page=10#93

CleanS
15.10.2023, 11:24
Пишу ФБ на ST. В ФБ входит цикл. Как (для отладки) запустить цикл пошагово, с просмотром промежуточных значений (каждую итерацию)? В режиме симулятора, еще до нажатия "пуск" выдается сразу полный результат работы цикла, шаги по циклам не даёт сделать. В Python, к примеру, я бы вставил после каждой итерации "print...". А здесь как?

70950

В режиме эмуляции нажимайте на стрелку, и будет пошаговый цикл исполнения. 1 нажатие - 1 цикл.

Сергей0308
15.10.2023, 12:53
и будет потом человек удивляться, почему это на 8А и просто датчиках у него ± лапоть...

Дурное дело не хитрое, можно чего-нибудь отчебучить и в этом случае, типа для экономии двухжильный кабель взять для подключения датчиков температуры. Или, что чаще встречается, во всяком случае на форуме, начинают калибровать входы-выходы, разумеется, плачевный результат гарантирован!

melky
15.10.2023, 12:55
Сергей0308 3-х жильный пофигу, модуль универсальный + длина кабеля делают свое дело. Хорошо если всегда на одно значение, а бывает и плавающая величина (например кабель проходит через помещение, где есть изменение температуры) и привет медвед...

Сергей0308
15.10.2023, 13:14
Сергей0308 3-х жильный пофигу, модуль универсальный + длина кабеля делают свое дело. Хорошо если всегда на одно значение, а бывает и плавающая величина (например кабель проходит через помещение, где есть изменение температуры) и привет медвед...

Это Вы описываете как раз двухпроводное подключение, когда в виде константы выставляют среднее сопротивление проводов, при изменении температуры окружающего воздуха сопротивление проводов будет меняться, а константа останется прежней. При трёхпроводном подключении происходит непрерывное измерение сопротивления проводов и такой лабуды не произойдёт, ещё и Вам заодно объяснил, чтобы всякую лабуду не писали!

melky
15.10.2023, 13:17
я описываю факт ТРЕХ проводного подключения на ПЛК150. после этого видал я использовать датчики без преобразователей...
з.ы. с 8А непосредственно не пробовал, но там тоже универсальные входы.

Сергей0308
15.10.2023, 13:27
я описываю факт ТРЕХ проводного подключения на ПЛК150. после этого видал я использовать датчики без преобразователей...
з.ы. с 8А непосредственно не пробовал, но там тоже универсальные входы.

Так трёхпроводное подключение и предназначено(делается) для компенсации сопротивления проводов не зависимо от температуры окружающего воздуха! Если Вы как обычно, что-то там начудили, кто же Вам виноват, в смысле, заходите почаще на форум и просвещайтесь! Надеюсь, теперь Вам понятно для чего делают трёхпроводное подключение ТС.
Я ещё раз повторяю, что начудить дело не хитрое, Вы попробуйте хоть раз по-человечьи сделать, в смысле, правильно, думаю, всё у Вас получится!

melky
15.10.2023, 13:45
Сергей0308 почему вы всегда считаете, что остальные дураки, не умеющие читать документацию к приборам ?

Ошибся, у 150, 154 только двухпроводка возможна. У 63-го возможна 3-х проводная схема, но и на нем температура хреново меряется... тут как не пляши, универсальные входы, их схемотехника.
Замена датчиков с НТП сразу решила все проблемы без танцев с бубнами...

Сергей0308
15.10.2023, 13:50
Сергей0308 почему вы всегда считаете, что остальные дураки, не умеющие читать документацию к приборам ?

Если Вы думаете что компенсация сопротивления при трёхпроводном подключении не работает при изменении температуры окружающего воздуха, собственно для чего это всё создавалось, что я об Вас должен был подумать?
Если у Вас что-то не работает по прямому его назначению, ищите неисправность(ошибку) и устраняйте!

В смысле, где Вы такую ересь прочитали? Ссылку дайте, вместе посмеёмся!

Newcomer
15.10.2023, 13:52
Добрый день

Выход Простого ПИД-регулятора из менеджера компонентов подключен к аналоговому выходу ПР, настроенному как 4...20 мА. Правильно я понимаю, что Минимальную мощность ПИД надо задать 4, а максимальную 20 ?

АРТ.Кар 64
15.10.2023, 14:00
Мощность ПИД-регулятора задаётся в "процентах"
Где 4-это 0 процентов, а 20-это 100 процентов. Возможно не прав,но тогда поправят.
У меня сервопривод работает 2-10 Вольт. Я задаю "минимальное"-20%,а "максимальное"-100%
Ибо аналоговый выход ПР 200-24 работает от 0 до 10 Вольт.

kondor3000
15.10.2023, 14:10
Добрый день

Выход Простого ПИД-регулятора из менеджера компонентов подключен к аналоговому выходу ПР, настроенному как 4...20 мА. Правильно я понимаю, что Минимальную мощность ПИД надо задать 4, а максимальную 20 ?

Если с ПИД выходит 100%, то надо конвертировать выход в FLOAT, и разделить на 100.
4 мА это 0.0 , а 20 мА это 1.0 для аналогового выхода.

1exan
15.10.2023, 14:11
Добрый день

Выход Простого ПИД-регулятора из менеджера компонентов подключен к аналоговому выходу ПР, настроенному как 4...20 мА. Правильно я понимаю, что Минимальную мощность ПИД надо задать 4, а максимальную 20 ?

Аналоговый выход в ПР, насколько я помню принимает значения float в диапазоне 0...1. Можно конечно задать для ПИД диапазон от 0 до 1, но наверно тогда получите очень маленькие значения для пропорционального коэффициента.
Сделайте диапазон ПИД от 0 до 100, а выход ПИД линейно масштабируйте в диапазон 0...1 (ну или просто делите на 100) - мне кажется, что так удобней

Эдуард_Н
20.10.2023, 04:09
Смена целевой платформы теперь недоступна?

Dimensy
20.10.2023, 06:02
Смена целевой платформы теперь недоступна?

На ПР103 и ПР205 изначально не было смены целевой платформы

Сергей0308
20.10.2023, 06:24
Я вот проект открыл для ПР200, там всё осталось как и было, в плане смены целевой платформы!
Как бы проблема не очень понятна, в смысле, Вы успели наделать проектов под новые приборы?
Старайтесь логику по возможности в виде макросов делать, в смысле легче перенести!

Эдуард_Н
20.10.2023, 06:49
На ПР103 и ПР205 изначально не было смены целевой платформы

И не предвидится наверное.

kondor3000
20.10.2023, 09:49
И не предвидится наверное.

Обычный проект в FBD переносится копипастом без проблем. ФБ и функции на ST теперь можно переносить файлами или тем же копипастом.

Oleg Berger
24.10.2023, 15:02
Где познакомится с описанием языка ST применительно именно к Owen Logic? Понятно что версия усеченная, но в справке к Owen Logic нет даже упоминания про массивы. Неужели настолько усеченная?

RfSS
24.10.2023, 15:56
Посмотрите справку по Коде сис и адаптируйте под типы данных UDINT и REAL. Правила такие же.

kondor3000
24.10.2023, 15:56
Где познакомится с описанием языка ST применительно именно к Owen Logic? Понятно что версия усеченная, но в справке к Owen Logic нет даже упоминания про массивы. Неужели настолько усеченная?

Доступны одномерные массивы, вот пример ФБ с циклами и массивами https://owen.ru/forum/showthread.php?t=38453&page=10#93
Пример функции с массивами https://owen.ru/forum/showthread.php?t=35489&page=5
Шаговый автомат простой https://owen.ru/forum/showthread.php?t=38239&page=29#285
И посложней https://owen.ru/forum/showthread.php?t=38239&page=11#105

Oleg Berger
25.10.2023, 14:38
Благодарю, хорошо уже что массивы есть. А может ещё много чего есть, а мы и не знаем :) ? Но ведь где-то всё, что есть должно быть описано? Разработчики OWL! Вы здесь есть? Прошу разъяснить.

kondor3000
25.10.2023, 14:58
Благодарю, хорошо уже что массивы есть. А может ещё много чего есть, а мы и не знаем :) ? Но ведь где-то всё, что есть должно быть описано? Разработчики OWL! Вы здесь есть? Прошу разъяснить.

Описание как и новые добавления в языке ST, в разработке. Следите за обновлениями Лоджика и читайте описание к ним.
Даже не знаю, отпишется кто нибудь из разработчиков тут, скорее нет.

Денисов Максим Сергеевич
26.10.2023, 10:50
Благодарю, хорошо уже что массивы есть. А может ещё много чего есть, а мы и не знаем :) ? Но ведь где-то всё, что есть должно быть описано? Разработчики OWL! Вы здесь есть? Прошу разъяснить.

Вся основная информация описана в справке, про массивы дополним информацию

Andry_EXO-Space
26.10.2023, 17:34
Здравствуйте!
ПР200 имеет 12 битный АЦП. Как узнать шаг измерения, те какое опорное напряжение у АЦП?

Andry_EXO-Space
26.10.2023, 17:41
вообще я туплю по поводу шага измерения тс. сколько ом минимум он может намерить?

Sergej_
26.10.2023, 17:42
Здравствуйте!
ПР200 имеет 12 битный АЦП. Как узнать шаг измерения, те какое опорное напряжение у АЦП?

Зачем опорное. Поделите диапазон 10в на 4095. В РЭ написано и для тока 4_20 и для напряжение 0-10. Читайте. Мутно там только про режим измерения сопротивления.

Andry_EXO-Space
26.10.2023, 17:43
и еще не понятно, как в овен лоджик в макрос добавить свой ФБ?

Sergej_
26.10.2023, 17:45
вообще я туплю по поводу шага измерения тс. сколько ом минимум он может намерить?

По не является СИ. Погрешности в РЭ тоже прописаны.

Andry_EXO-Space
26.10.2023, 18:27
пожалуйста объясните, почему рт100 не рекомендуется использовать на пр200... а рек рт1000. у них же диапазон измерений одинаковый.

Sergej_
26.10.2023, 18:58
пожалуйста объясните, почему рт100 не рекомендуется использовать на пр200... а рек рт1000. у них же диапазон измерений одинаковый.

Поищите по форуму, много раз обсуждалось. Основная проблема кроется в нсх. Сравните и все станет ясно. При изменении температуры на один градус, сопротивление пт100 изменится примерно на 0.39 Ом, а пт 1000 на 3.9Ом . Вход пр200 0,39 просто физически не способен уловить. И не помогут всякие шаманства,

Юрий Н
26.10.2023, 21:40
пожалуйста объясните, почему рт100 не рекомендуется использовать на пр200... а рек рт1000. у них же диапазон измерений одинаковый.

А где можно ознакомиться с теми "не рекомендациями"?

Andry_EXO-Space
27.10.2023, 03:18
мне на форуме сказали. А вообще получается вопрос просто в точности измерения у пт100 будет ~2.7гр. у пт1000 ~0,25гр.
Спасибо, я разобрался!

Sergej_
27.10.2023, 03:30
мне на форуме сказали. А вообще получается вопрос просто в точности измерения у пт100 будет ~2.7гр. у пт1000 ~0,25гр.
Спасибо, я разобрался!

Правда гораздо хуже, Вы привели цифры без учёта иных погрешностей.

Юрий Н
27.10.2023, 08:31
мне на форуме сказали.
Ясно. Больше ни чего не сказали?

А вообще получается вопрос просто в ....
Почитайте внимательно.
Это тоже на форуме сказали.
https://owen.ru/forum/showthread.php?t=38549

Traveller
31.10.2023, 10:17
Доброго времени суток!

При выполнении проекта столкнулся с такой проблемой, если конечно это можно назвать проблемой, скорее неудобство.
В общем некоторые переменные на холсте проекта отображаются в урезанном виде и что бы понять что это такое, нужно ее кликать и вызывать таблицу переменных, хотя некоторые переменные текст которых гораздо длиннее отображаются полностью, это жутко неудобно! Это можно как ни будь исправить? Или это все же мне в раздел "Фичи и Баги"?
Так это выглядит:
https://owen.ru/forum/attachment.php?attachmentid=71243&stc=1&d=1698736590

Traveller
31.10.2023, 10:26
Нет, не пробовал, только сейчас об этом узнал :)
Хотя как я вижу это работает, но тем не менее, меняются геометрические пропорции иконки, что на мой взгляд не очень эстетично... :)
Да бог с ними с пропорциями, мне ехать, а не шашечки... :)

petera
31.10.2023, 10:27
Доброго времени суток!

При выполнении проекта столкнулся с такой проблемой, если конечно это можно назвать проблемой, скорее неудобство.
В общем некоторые переменные на холсте проекта отображаются в урезанном виде и что бы понять что это такое, нужно ее кликать и вызывать таблицу переменных, хотя некоторые переменные текст которых гораздо длиннее отображаются полностью, это жутко неудобно! Это можно как ни будь исправить? Или это все же мне в раздел "Фичи и Баги"?
Так это выглядит:
https://owen.ru/forum/attachment.php?attachmentid=71243&stc=1&d=1698736590

Ставили переменную на холст когда слева от неё до края холста было мало места
Теперь только "Ctrl+стрелка вправо" на переменной.
("Ctrl+стрелка влево" - уменьшают ширину элементов
"Ctrl+стрелка вверх" - уменьшают высоту
"Ctrl+стрелка вниз" - увеличивают высоту")

Newcomer
31.10.2023, 17:28
В OL перестала запускаться симуляция. В чем может быть причина ?

kondor3000
31.10.2023, 18:25
В OL перестала запускаться симуляция. В чем может быть причина ?

Ищите причину в в своём компе или своей программе. Симуляция как работала, так и работает.

игорь68
03.11.2023, 10:25
Коллеги добрый день. Вопрос по сети.
Есть китайский регулятор оборотов движка.
Там управление 0-10. И RT/RS485. И таких движков 70 шт.
По 0-10 воросов нет. 1движок = 1 пр200.В скаду сигналы Вкл/Выкл и регулировка скорости(возможно только один раз при настройке больше и не нужно будет)
А вот как сделать это по сети. Как обычно описания регистров управления нет. Есть какой то софт что бы понять какой регистор нужно отправить с мастера что бы слейв работал.

МихаилГл
03.11.2023, 10:37
Коллеги добрый день. Вопрос по сети.
Есть китайский регулятор оборотов движка.
Там управление 0-10. И RT/RS485. И таких движков 70 шт.
По 0-10 воросов нет. 1движок = 1 пр200.В скаду сигналы Вкл/Выкл и регулировка скорости(возможно только один раз при настройке больше и не нужно будет)
А вот как сделать это по сети. Как обычно описания регистров управления нет. Есть какой то софт что бы понять какой регистор нужно отправить с мастера что бы слейв работал.

Там скорее не modbus... Обычно для проверки таких устройств я использую Hercules

Newcomer
03.11.2023, 13:44
Там скорее не modbus... Обычно для проверки таких устройств я использую Hercules

А что такое Hercules ?

melky
03.11.2023, 14:18
полагаю это.

https://support.avproedge.com/portal/en/kb/articles/hercules-setup-utility

МихаилГл
03.11.2023, 16:00
полагаю это.

https://support.avproedge.com/portal/en/kb/articles/hercules-setup-utility

Да, эта
https://www.hw-group.com/software/hercules-setup-utility

novinky
25.11.2023, 02:10
Есть ли возможность узнать:
- отличается ли проект на ПК и в ПР?
- если да, покажет ли где и\или в чем отличие?

Sergej_
25.11.2023, 05:51
Есть ли возможность узнать:
- отличается ли проект на ПК и в ПР?
- если да, покажет ли где и\или в чем отличие?

Онлайн отладка не подключится и выдаст сообщение , если проекты разные.

paramen
25.11.2023, 10:18
Добрый день!
Подскажите как можно организовать следующее: есть две переменные Float, в них хранится значение "уставка температуры днем", "уставка температуры ночью". Как можно передать значение в третью переменную (на вход уставки ПИД регулятора) по недельному таймеру?

Юрий Н
25.11.2023, 10:32
Добрый день!
Подскажите как можно организовать следующее: есть две переменные Float, в них хранится значение "уставка температуры днем", "уставка температуры ночью". Как можно передать значение в третью переменную (на вход уставки ПИД регулятора) по недельному таймеру?

при помощи fSEL

melky
25.11.2023, 10:39
Используйте fSEL

novinky
25.11.2023, 12:20
Онлайн отладка не подключится и выдаст сообщение , если проекты разные.
"Онлайн отладка" - нигде не нашел.
"Режим симулятора", "Пуск" с подключением и без никакого сообщения не нашел, хоть с одинак хоть с разными проектами.
Подскажите пожалуйста можно узнать актуальность или нет.

Dimensy
25.11.2023, 12:39
"Онлайн отладка" - нигде не нашел.
"Режим симулятора", "Пуск" с подключением и без никакого сообщения не нашел, хоть с одинак хоть с разными проектами.
Подскажите пожалуйста можно узнать актуальность или нет.

Есть все в справке https://docs.owen.ru/product/programmnoe_obespechenie_owen_logic/986/77843#topic-77862

novinky
26.11.2023, 09:07
Спасибо. Подскажите пожалуйста как сбросить на 0 значение сетевой переменной по выкл-вкл пр200

EFrol
26.11.2023, 09:19
Спасибо. Подскажите пожалуйста как сбросить на 0 значение сетевой переменной по выкл-вкл пр200

Сброс в 0 при ВКЛ:
71893

Dimensy
26.11.2023, 09:26
Спасибо. Подскажите пожалуйста как сбросить на 0 значение сетевой переменной по выкл-вкл пр200

вот так можно сбросить при включении ПР
71894

Leopold62
27.11.2023, 08:27
Всем доброго времени суток! Я новичок в Овене, поэтому прошу больно не пинать. До сих пор работал со средой ZelioLogiс. В связи с этим вопрос, можно ли заменить соединительную линию между макросами или FBD блоками на текст. В справке такого не нашел. Спасибо.

kondor3000
27.11.2023, 08:32
Всем доброго времени суток! Я новичок в Овене, поэтому прошу больно не пинать. До сих пор работал со средой ZelioLogiс. В связи с этим вопрос, можно ли заменить соединительную линию между макросами или FBD блоками на текст. В справке такого не нашел. Спасибо.

В принципе можно, только зачем вам это не понятно.
В ФБ на ST надо указать переменную входа и вашего выхода. В коде вход присвоить на выход. Одна переменная соединиться с другой. Только с входом и выходом блока, всё равно надо соединять перемычкой.
Проще на выходе и входе поставить одну и ту же переменную, без ФБ.

МихаилГл
27.11.2023, 08:35
В принципе можно, только зачем вам это не понятно.
В ФБ на ST надо указать переменную входа и вашего выхода. Одна переменная соединиться с другой перемычкой. Только с входом и выходоб блока, всё равно надо соединять перемычкой.

А может он хочет типа разорвать соединение, чтоб линии по экрану не таскать? Но это вроде без проблем делается...

capzap
27.11.2023, 08:36
Всем доброго времени суток! Я новичок в Овене, поэтому прошу больно не пинать. До сих пор работал со средой ZelioLogiс. В связи с этим вопрос, можно ли заменить соединительную линию между макросами или FBD блоками на текст. В справке такого не нашел. Спасибо.

https://docs.owen.ru/product/programmnoe_obespechenie_owen_logic/986/77843#topic-77848 этот пункт должен подойти для решения вопроса

Leopold62
27.11.2023, 17:08
А может он хочет типа разорвать соединение, чтоб линии по экрану не таскать? Но это вроде без проблем делается...

Именно так. От линий в глазах рябит. В ZelioLogic можно было из контекстного меню заменить линии любым текстом. А с Овеном такое не проходит. Потому и задал вопрос.

МихаилГл
27.11.2023, 17:15
Именно так. От линий в глазах рябит. В ZelioLogic можно было из контекстного меню заменить линии любым текстом. А с Овеном такое не проходит. Потому и задал вопрос.

Выше написали. Делаете вход и выход. В сименс лого комфорт есть функция "разорвать соединения", вроде... Тут только так..

novinky
28.11.2023, 14:22
Подскажите пожалуйста, почему "Write to FB" не записывает значение "30" во время задержки выключения таймера "TOF1"?

Dimensy
28.11.2023, 14:32
Подскажите пожалуйста, почему "Write to FB" не записывает значение "30" во время задержки выключения таймера "TOF1"?

Все он записывает, просто 30 - это в миллисекундах

melky
28.11.2023, 14:33
30мс уж очень маленькое число, может вы просто не успеваете его отследить?

novinky
28.11.2023, 14:34
как реализовать контроль связи с мастером? попробовал через таймер выдержку которой постоянно обновляет мастер не получается. и 30000 выставлял

melky
28.11.2023, 14:40
может просто счетчик? к тому же какой опрос мастером будет, в цикле или с каким-то периодом?

Dimensy
28.11.2023, 15:06
как реализовать контроль связи с мастером? попробовал через таймер выдержку которой постоянно обновляет мастер не получается. и 30000 выставлял

Вот концепт https://www.youtube.com/watch?v=-gjHoICH55c&t=1s

MikeS
28.11.2023, 20:54
Выходы К1-К4 должны моргать, когда работают в режиме ШИМ? Подаю на К1 разные значения от 0,0 до 1,0, но выход постоянно светится. Мне просто понять: работает регулирование или нет?

Dimensy
28.11.2023, 21:12
Выходы К1-К4 должны моргать, когда работают в режиме ШИМ? Подаю на К1 разные значения от 0,0 до 1,0, но выход постоянно светится. Мне просто понять: работает регулирование или нет?

Насколько я знаю, выходы К1-К4 - это у ПР200 и там не должно ничего мигать. Реле какое?

MikeS
28.11.2023, 21:51
Насколько я знаю, выходы К1-К4 - это у ПР200 и там не должно ничего мигать. Реле какое?
Дело не в реле. Вопрос про ОЛ: когда выход К1 (К2-К4) настроен на режим работы как ШИМ, он должен менять свой цвет в режиме симулятора? У меня он просто красный при любом значении, отличном от "0". Мне казалось, что он должен показывать активность ШИМ.

novinky
29.11.2023, 03:22
Как исправить пустые прямоугольники вместо значений в режиме "Онлайн отладка"?
При этом большая часть значений отображается, а некоторые нет.
С состояниями дискретных выходов так же, то отображает включенное состояние то не отображает, при том что выход включен. Спасибо вам за ответы.

1exan
29.11.2023, 04:45
Как исправить пустые прямоугольники вместо значений в режиме "Онлайн отладка"?
При этом большая часть значений отображается, а некоторые нет.
С состояниями дискретных выходов так же, то отображает включенное состояние то не отображает, при том что выход включен. Спасибо вам за ответы.

В OL есть некое ограничение на количество одновременно отображаемых значений в отладке. Увеличивайте масштаб, чтобы уменьшить количество одновременно отображаемых значений

Королев Кирилл
29.11.2023, 09:26
Дело не в реле. Вопрос про ОЛ: когда выход К1 (К2-К4) настроен на режим работы как ШИМ, он должен менять свой цвет в режиме симулятора? У меня он просто красный при любом значении, отличном от "0". Мне казалось, что он должен показывать активность ШИМ.

Добрый день! При любом значении, отличном от нуля эти выходы будут подсвечиваться одинаково.

MikeS
29.11.2023, 21:34
Добрый день! При любом значении, отличном от нуля эти выходы будут подсвечиваться одинаково.

Спасибо!
А сделать так, чтоб он отображал работу выхода, можно реализовать в будущих версиях? На мой взгляд, это очевидная вещь, в плане восприятия работы алгоритма при его отладке в режиме симулятора.

Leopold62
30.11.2023, 09:35
https://docs.owen.ru/product/programmnoe_obespechenie_owen_logic/986/77843#topic-77848 этот пункт должен подойти для решения вопроса

Всем большое спасибо!

Saint999
03.12.2023, 18:57
День добрый!

Данный проект:




50739

50740

Запись должна быть разовая(кратковременная) и я обычно в мастере создаю две разные сетевые переменные, одну пишу, другую читаю, в слейве это будет одна переменная Var1! Я обычно делаю так, что бы запись шла, пока не считается "0" из этой переменной и ограничиваю по времени 10 секундами, мало ли что, например мыши провод перегрызли!


Работает в паре с этим проектом

Вот добавил в свойства макроса настройку значений по умолчанию:

50379

Останется нужные значения найти, наверно проще В ОЛ сделать небольшой проект для этого!

50380


9 ПР200 соединены по модбасу, на 8 нажимаются и загораются кнопки, 9я (мастер) передает согласно настройке соответствующей нажатой кнопке на модули 16Р и там уже работают исполнительные устройства.
Появилась потребность посчитать время работы каждой из 8 ПР (слейв) и вывести в виде таблицы на какой-нибудь экран.
Например вот так:
72081
Где время и дата начала сеанса (нажата любая из 7 кнопок на слейве пр, 8 стоп, на нее не реагируем)
Номер поста - порядковый номер ПР
Время общее - время с момента нажатия на кнопку 1-7 и до нажатия на кнопку 8, пока нажимаются любые кроме 8 мы считаем это время.
Время кн1 - 7 - время работы каждой из кнопок пока она нажата, до того как нажмут кнопку 8 могут несколько раз быть нажата любая из 7.
Температура в начале отсчета времени (нажата отличная от 8й кнопка)

Какой экран можно применить для такой задачи? Буду благодарен за любую информацию, спасибо!

novinky
11.12.2023, 10:36
МОГУ корректно передать AI вход на AI выход.
Свойства AI:
4-20 мА
Верхняя граница 181.
Поэтому текущее значение умножаю на 100 и делю на 181, отбрасываемый остаток от деления посчитал не сильно должно повлиять на значение.
Далее возможность коррекция смещения и наклона.

Вы правы, умножение лишне, Спасибо

1exan
11.12.2023, 10:54
не могу корректно передать AI вход на AI выход.
Свойства AI:
4-20 мА
Верхняя граница 181.
Поэтому текущее значение умножаю на 100 и делю на 181, отбрасываемый остаток от деления посчитал не сильно должно повлиять на значение.
Далее возможность коррекция смещения и наклона.
Подскажите пожалуйста почему многократно завышает выходное значение?

Что значит корректно?
Зачем вы умножаете на 100?
Для управления аналоговым выходом следует подавать на него значение вещественного типа в диапазоне 0,0...1,0

Сергей0308
11.12.2023, 12:21
МОГУ корректно передать AI вход на AI выход.
Свойства AI:
4-20 мА
Верхняя граница 181.
Поэтому текущее значение умножаю на 100 и делю на 181, отбрасываемый остаток от деления посчитал не сильно должно повлиять на значение.
Далее возможность коррекция смещения и наклона.

Вы правы, умножение лишне, Спасибо

Может так:

72294

AI1 - сигнал;
AI2 - верхняя граница диапазона;
AI3 - нижняя граница диапазона!

Taras_trsv
11.12.2023, 14:03
Добрый день. Форумчане, вопрос от начинающего, у кого нибудь есть решебник задач по среде codesys v3.5 ?

bayk
11.12.2023, 15:16
Добрый день. Форумчане, вопрос от начинающего, у кого нибудь есть решебник задач по среде codesys v3.5 ?
А зачем вы этот вопрос задаете в рандомном ветке еще и не в том разделе??

Yakut
11.12.2023, 16:21
Доброго времени суток, коллеги.
А есть ли в OwenLogic оператор MOVE как в ST или LD?

Saint999
11.12.2023, 16:24
День добрый!

Какой экран можно применить для такой задачи? Буду благодарен за любую информацию, спасибо!

Я может некорректно выразился что все игнорируют?

Почитав информацию по форуму, я так понимаю ПР не умеет ни баз данных ни архивов, следовательно такое количество информации на пр не получится держать, можно ли возложить данную задачу на сп307 в расширенной версии например? Или нужно ставить плк и и в нем делать архив? Может какие то еще есть решения данной задачи, скада не подходит, не должно быть эвм.

melky
11.12.2023, 16:24
SEL с закольцовкой выхода на один из входов. Потренируйтесь, в зависимости 0 или 1 будет управляющим сигналом.

Saint999 ПР в принципе умеет архивировать, если вам не много данных хранить, есть макросы ППЗУ на форуме. Но это конечно задача не для ПР. но по мелочи можно.

А разве панель оператора что-то может хранить?

МихаилГл
11.12.2023, 16:41
Я может некорректно выразился что все игнорируют?

Почитав информацию по форуму, я так понимаю ПР не умеет ни баз данных ни архивов, следовательно такое количество информации на пр не получится держать, можно ли возложить данную задачу на сп307 в расширенной версии например? Или нужно ставить плк и и в нем делать архив? Может какие то еще есть решения данной задачи, скада не подходит, не должно быть эвм.

Напишите https://owen.ru/forum/member.php?u=11873
Он этим занимается

МихаилГл
11.12.2023, 16:44
SEL с закольцовкой выхода на один из входов. Потренируйтесь, в зависимости 0 или 1 будет управляющим сигналом.

Saint999 ПР в принципе умеет архивировать, если вам не много данных хранить, есть макросы ППЗУ на форуме. Но это конечно задача не для ПР. но по мелочи можно.

А разве панель оператора что-то может хранить?

Даже на флэшку вроде позволяет архив писать... Но я этим не занимался, у меня для этого контроллер в связке с sql через рапид скаду.

melky
11.12.2023, 16:50
ну если СП может на флешку писать то тогда да... Правда тут вопрос цены уже начнет играть роль...

EFrol
11.12.2023, 17:33
Я может некорректно выразился что все игнорируют?

Почитав информацию по форуму, я так понимаю ПР не умеет ни баз данных ни архивов, следовательно такое количество информации на пр не получится держать, можно ли возложить данную задачу на сп307 в расширенной версии например? Или нужно ставить плк и и в нем делать архив? Может какие то еще есть решения данной задачи, скада не подходит, не должно быть эвм.

Конечно, можно!!! Она и посчитает, и выведет, и архив закинет!!!

EFrol
11.12.2023, 17:37
Доброго времени суток, коллеги.
А есть ли в OwenLogic оператор MOVE как в ST или LD?

Есть!!! У OW и ST есть!!

Yakut
11.12.2023, 21:19
SEL с закольцовкой выхода на один из входов. Потренируйтесь, в зависимости 0 или 1 будет управляющим сигналом.


Да, благодарю за ответ, но мне это, видимо, не шибко помогло. Он сбрасывает значение до 0, при условии отсутствие сигнала на входе. А мне нужно что бы сохранял.

Иначе говоря, вначале верхняя часть программы работала, где идёт сравнение move с 0, а затем нижняя где сравнение move с 1.
И так происходило циклично. Мне пока удавалось переключать циклы, но на этом и останавливалось, только на нижней части программы. Использовал FTRIG с задержкой 1 цикла (пунктирная линия).

Вот как тут, человеческий нормальный MOVE!
см. вложение 1

Так что если вдруг кто чего путного подскажет, буду очень признателен.

EFrol
11.12.2023, 21:32
I2 is TRUE -> Move = 8
I3 is TRUE -> Move = 1
72313

Dimensy
11.12.2023, 22:20
Да, благодарю за ответ, но мне это, видимо, не шибко помогло. Он сбрасывает значение до 0, при условии отсутствие сигнала на входе. А мне нужно что бы сохранял.

Иначе говоря, вначале верхняя часть программы работала, где идёт сравнение move с 0, а затем нижняя где сравнение move с 1.
И так происходило циклично. Мне пока удавалось переключать циклы, но на этом и останавливалось, только на нижней части программы. Использовал FTRIG с задержкой 1 цикла (пунктирная линия).

Вот как тут, человеческий нормальный MOVE!
см. вложение 1

Так что если вдруг кто чего путного подскажет, буду очень признателен.

Я не понял, вы хотите сначала запускать насосы 1-2, а потом 2-1, т.е. организовать ротацию? По картинке, у вас что так, что так - оба насоса будут запускаться одновременно

Yakut
11.12.2023, 22:49
I2 is TRUE -> Move = 8
I3 is TRUE -> Move = 1
72313

Уже хорошо, но тут работа от двух разных входов, а мне от 1 надо:rolleyes:

Yakut
11.12.2023, 22:50
Я не понял, вы хотите сначала запускать насосы 1-2, а потом 2-1, т.е. организовать ротацию? По картинке, у вас что так, что так - оба насоса будут запускаться одновременно

Совершенно верно.
Ну и что бы было понтяно совсем, то вот что когда-то давно работало на LD.

Сергей0308
11.12.2023, 23:45
Может товарищ Т-триггер хочет? Это я так думаю.
Вот здесь в посте #7419 в последний раз выкладывал: https://owen.ru/forum/showthread.php?t=9398&page=742

Saint999
12.12.2023, 12:07
Конечно, можно!!! Она и посчитает, и выведет, и архив закинет!!!

Может есть какой то пример построения подобных таблиц, желательно в связке с ПР?

Yakut
12.12.2023, 22:01
Может товарищ Т-триггер хочет? Это я так думаю.
Вот здесь в посте #7419 в последний раз выкладывал: https://owen.ru/forum/showthread.php?t=9398&page=742

Сергей как всегда КРАСАВЧЕГ!
Этого компонента как раз и не хватало! БЛАГОДАРЮ.

Остальным тоже спасибо, умные советы очень помогли!
melky молоток!

Сергей0308
13.12.2023, 21:23
Сергей как всегда КРАСАВЧЕГ!
Этого компонента как раз и не хватало! БЛАГОДАРЮ.

Остальным тоже спасибо, умные советы очень помогли!
melky молоток!

Надеюсь это не у меня в глазах двоится, в смысле, зачем такая двойственность? Вроде кроме значений уставок там и разницы нет, в смысле, может проще уставки и менять?
У Вас уже спрашивали, может Вы ротацию хотите, в смысле, чтобы при каждом включении насосы менялись местами?
Тогда всё упростится в разы и подобное очень часто обсуждалось, жаль, что Вы ничего не смотрите!
При выключении насосов Т-триггер переключается в противоположное состояние и насосы меняются местами, в смысле, при следующем включении первым включается другой насос.
Вот весь механизм переключения(ротации):

72362

Сергей0308
14.12.2023, 23:56
Сергей как всегда КРАСАВЧЕГ!
Этого компонента как раз и не хватало! БЛАГОДАРЮ.

Остальным тоже спасибо, умные советы очень помогли!
melky молоток!

Чего молчите как рыба об лёд, в смысле, Вам подходит моя конструкция?
Вот практически готовый проект, насколько смог понять чего Вам надо:

72382

Только аварии не знаю куда присобачить и зачем.

CoollFox
16.01.2024, 18:17
Добрый день!
Вопрос новичка. ПР205

Подскажите как реализовать задачу управление насосом и с экрана и с сети? битовая переменная ЦиркНасос она же на экране Динамический текст булевый.
Хочу и с прибора и с сети видеть изменение переменной ЦиркНасос и независимо от состояния котла включать или выключать его.
Пробовал использовать SelChgB макрос - не работает.
72975

Спасибо

Dimensy
16.01.2024, 19:06
Добрый день!
Вопрос новичка. ПР205

Подскажите как реализовать задачу управление насосом и с экрана и с сети? битовая переменная ЦиркНасос она же на экране Динамический текст булевый.
Хочу и с прибора и с сети видеть изменение переменной ЦиркНасос и независимо от состояния котла включать или выключать его.
Пробовал использовать SelChgB макрос - не работает.
72975

Спасибо

В свойствах ЦиркНасос поставьте запись в конце цикла

CoollFox
16.01.2024, 21:18
В свойствах ЦиркНасос поставьте запись в конце цикла

Спасибо огромное! Все работает как надо!

sav-62
20.01.2024, 21:46
Всем доброго времени суток. Помогите разобраться. Исходные данные - ПР100. Программа Modbus Poll. Не могу вывести информацию по часам (адрес 1024 и выше), всё по нулям. Пробовал и в режиме РАБОТА и СТОП, функции 03 и 04. А вот запись (функция 06) без проблем. Какая может быть причина?. Работа с переменными без замечаний.

kondor3000
20.01.2024, 23:14
Всем доброго времени суток. Помогите разобраться. Исходные данные - ПР100. Программа Modbus Poll. Не могу вывести информацию по часам (адрес 1024 и выше), всё по нулям. Пробовал и в режиме РАБОТА и СТОП, функции 03 и 04. А вот запись (функция 06) без проблем. Какая может быть причина?. Работа с переменными без замечаний.

Вы хоть скрины бы сделали, как вы их выводите.

sav-62
21.01.2024, 12:41
ПР100 в режиме РАБОТА. Подключаюсь по RS485 через Микротик NPort5510 в режиме RealPort
73033

kondor3000
21.01.2024, 14:55
ПР100 в режиме РАБОТА. Подключаюсь по RS485 через Микротик NPort5510 в режиме RealPort

Вы вообще время в ПР проверяли, может батарейка села ?
Попробуйте читать по 1 регистру, а на 6 сразу и похоже у вас смещение адресов есть +1, проверьте.
А вообще проверить можно Овен ОРC сервером или подобным https://owen.ru/catalog/opc_serveri

И ещё есть тонкость https://owen.ru/forum/showthread.php?t=38980&page=2&p=427122#post427122

sav-62
21.01.2024, 16:18
Батарейку в первую очередь поменял. Через OWEN Logic время считывается. Запись по 06 функции работает, т.е. время меняется. Регистры что по один, что шесть, все равно нули показывает. Пробовал также сперва записать, и тут же считать. С календарем такая же проблема. Попробую чуть позже через OPC протестировать.

kondor3000
21.01.2024, 16:36
Пробовал также сперва записать, и тут же считать.

Так не будет работать, читайте по ссылке.

keysansa
21.01.2024, 20:40
Всем доброго времени суток. Помогите разобраться. Исходные данные - ПР100. Программа Modbus Poll. Не могу вывести информацию по часам (адрес 1024 и выше), всё по нулям. Пробовал и в режиме РАБОТА и СТОП, функции 03 и 04. А вот запись (функция 06) без проблем. Какая может быть причина?. Работа с переменными без замечаний.
1. Часто в Modbus устройствах адреса регистров в документации указываются с 0, а по факту 0 регистр прочитать нельзя. Читать через ModPull надо с 1 регистра.
2. Какой ответ возвращает Modpull? Таймаут или что?

sav-62
22.01.2024, 08:40
Modpull возвращает 0. Скриншот я выложил выше. Адрес 1024 и выше. Пробовал читать на 1-ом регистре и 6-и (как на скриншоте). При этом, если включить запись (6-я функция), то время изменяется, а прочитать не могу. Пока не понимаю что я делаю не так. Пытаюсь выполнить действия по видео "ПР100 с RS485. Управляем выходами". Управление с выходами без замечаний, а вот с часами и календарем проблемы.

sav-62
22.01.2024, 22:33
Всем спасибо. Что мы на данный момент имеем. Через программу qModMaster всё нормально читается и записывается (правда со сдвигом адреса +1). А вот Modpull почему-то только записывает, а читать не хочет. Возможно надо со временем поиграться чтобы Modpull нормально отрабатывал.

StoneCold
23.01.2024, 14:57
Доброго времени суток! Подскажите, как можно реализовать таймер включения и переключения 2 насосов, к примеру одному надо отработать 5 часов, во время отключения, таймер должен встать на паузу, после включения продолжить работать, после истечения 5 часов происходит переключение на другой насос, и со вторым та же история. При этом при переливе и срабатывании аварийной груши, они работают оба

Сергей0308
23.01.2024, 19:09
Доброго времени суток! Подскажите, как можно реализовать таймер включения и переключения 2 насосов, к примеру одному надо отработать 5 часов, во время отключения, таймер должен встать на паузу, после включения продолжить работать, после истечения 5 часов происходит переключение на другой насос, и со вторым та же история. При этом при переливе и срабатывании аварийной груши, они работают оба

Здесь выкладывал таймер с паузой: https://owen.ru/forum/showthread.php?t=33720&page=17
Если время работы обеих насосов одинаковое достаточно Т-триггера, если разное, меняйте уставку таймера, всё!

kondor3000
23.01.2024, 21:37
Доброго времени суток! Подскажите, как можно реализовать таймер включения и переключения 2 насосов, к примеру одному надо отработать 5 часов, во время отключения, таймер должен встать на паузу, после включения продолжить работать, после истечения 5 часов происходит переключение на другой насос, и со вторым та же история. При этом при переливе и срабатывании аварийной груши, они работают оба

Вариант на 2 насоса (можно изменить), переключение через 5 часов с паузой, с переливом и аварийными входами. 73059
Наработка считается как Нараб=Часы*10000+Мин*100+Сек.

Иван163
24.01.2024, 14:17
Вопрос к знатокам.
Задача:
При первом пуске ПР205 записать "дефолтное" значение в переменную (он же привязана к динамическому тексту), а после, когда есть необходимость, изменять переменную с экрана (с динамического текста).
Задача мною решена, но я сомневаюсь в правильности её решения, а именно:
73076730777307873079
1. Насколько правильно, что переменная HMI_Test будет при каждом цикле перезаписываться на экране (она же динамический текст)?

1exan
24.01.2024, 16:22
Вопрос к знатокам.
Задача:
При первом пуске ПР205 записать "дефолтное" значение в переменную (он же привязана к динамическому тексту), а после, когда есть необходимость, изменять переменную с экрана (с динамического текста).
Задача мною решена, но я сомневаюсь в правильности её решения, а именно:
73076730777307873079
1. Насколько правильно, что переменная HMI_Test будет при каждом цикле перезаписываться на экране (она же динамический текст)?

На ФБД:
73080

Можно конечно аналогично и на ST

АлександрМарк
26.01.2024, 10:53
Добрый день. подключен энкодер к ПЛК200-3 прошивка и таргет совпадают, время выполнения программы макс 750 мкс, энкодер 1000 имп/оборот 24в, точка отсчета выход z енкодера. считаю импульсы на оборот. при скорости вращения свыше 40 об/мин происходят потери импульсов обычно 3-4 на оборот, но достигают 15 имп/оборот. при увеличении скорости потери увеличиваются. повторяемости нет, получается что на частоте примерно более 4кГц не стабильная работа. к выходу Z энкодера подключен счетчик ( количество оборотов энкодера) значение счетчика * 4000 не равно значению энкодера , как бороться с отсутствием повторяемости? попробую собрать статистику по потерям импульсов от скорости.

IVM
26.01.2024, 11:30
Не тянет ПЛК200 эту задачу. А вот ПЛК110[М02] с этой задачей легко справится.

МихаилГл
26.01.2024, 11:37
Добрый день. подключен энкодер к ПЛК200-3 прошивка и таргет совпадают, время выполнения программы макс 750 мкс, энкодер 1000 имп/оборот 24в, точка отсчета выход z енкодера. считаю импульсы на оборот. при скорости вращения свыше 40 об/мин происходят потери импульсов обычно 3-4 на оборот, но достигают 15 имп/оборот. при увеличении скорости потери увеличиваются. повторяемости нет, получается что на частоте примерно более 4кГц не стабильная работа. к выходу Z энкодера подключен счетчик ( количество оборотов энкодера) значение счетчика * 4000 не равно значению энкодера , как бороться с отсутствием повторяемости? попробую собрать статистику по потерям импульсов от скорости.

Надо энкодера подключать к FDI в режиме энкодера и импульсы не подсчитывать, а забирать с аппаратных переменных. Программно не прокатит.

АлександрМарк
26.01.2024, 12:28
так и идет речь о переменных счетчиков с таргета, которые считаются вне исполняемой программы импульсы теряются

МихаилГл
26.01.2024, 12:34
так и идет речь о переменных счетчиков с таргета, которые считаются вне исполняемой программы импульсы теряются

https://owen.ru/forum/showthread.php?t=39003&p=427074&viewfull=1#post427074

У меня типа такого и вроде нормально все... Но это тахометр, но как бы все равно...

Nerion
29.01.2024, 08:58
Добрый день!
Какое максимальное количество модулей Mx210 можно подключить к СПК110

Тимур Назарбоев
29.01.2024, 09:35
Добрый день!
Какое максимальное количество модулей Mx210 можно подключить к СПК110

Добрый день, у СПК и ПЛК210 выделенного верхнего ограничения нет. Вы можете ознакомиться с постом ---> https://owen.ru/forum/showthread.php?t=31176&p=305904&viewfull=1#post305904

товарищ
02.02.2024, 15:43
Здравствуйте. Требуется по истечению времени автоматом активировать основной экран. Не понимаю как это сделать по изменению переменной. На одном из экранов размещен комбобокс, с этого экрана по изменению переменной Э0...Э9 на нужный экран перемещаюсь. На основной экран попадаю, когда Э0 = 1. Но это происходит только, когда активный экран - тот, на котором расположен комбобокс. Есть ль способ перемещения на требуемый экран при изменении Э0 вне зависимости от того какой экран в данный момент активен.

Sergej_
02.02.2024, 15:57
Здравствуйте. Требуется по истечению времени автоматом активировать основной экран. Не понимаю как это сделать по изменению переменной. На одном из экранов размещен комбобокс, с этого экрана по изменению переменной Э0...Э9 на нужный экран перемещаюсь. На основной экран попадаю, когда Э0 = 1. Но это происходит только, когда активный экран - тот, на котором расположен комбобокс. Есть ль способ перемещения на требуемый экран при изменении Э0 вне зависимости от того какой экран в данный момент активен.
Так пробовали?

товарищ
02.02.2024, 16:20
Да уже пробовал. Переход по изменению переменной происходит только когда на дисплее открыт экран с комбобоксом.

Dimensy
02.02.2024, 16:33
Здравствуйте. Требуется по истечению времени автоматом активировать основной экран. Не понимаю как это сделать по изменению переменной. На одном из экранов размещен комбобокс, с этого экрана по изменению переменной Э0...Э9 на нужный экран перемещаюсь. На основной экран попадаю, когда Э0 = 1. Но это происходит только, когда активный экран - тот, на котором расположен комбобокс. Есть ль способ перемещения на требуемый экран при изменении Э0 вне зависимости от того какой экран в данный момент активен.

Не понял как вы там что хотите сделать, но нужно на каждом экране прописать условие перехода на основной экран

товарищ
02.02.2024, 16:33
Не могу понять эту функцию, может в ней дело?

товарищ
02.02.2024, 16:40
Не понял как вы там что хотите сделать, но нужно на каждом экране прописать условие перехода на основной экран

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

Sergej_
02.02.2024, 16:47
У Вас переменная " 30" на скрине каким образом формируется? Надо чтоб был импульс. 0-1-0. по изменению 0-1 должно переключиться. Но если переменная далее будет оставаться в 1 вот тут возможны конфликты с другими условиями перехода.

товарищ
02.02.2024, 16:52
У Вас переменная " 30" на скрине каким образом формируется? Надо чтоб был импульс. 0-1-0. по изменению 0-1 должно переключиться. Но если переменная далее будет оставаться в 1 вот тут возможны конфликты с другими условиями перехода.

Так и происходит. ТР поставил уже в процессе отладки, до этого стоял RTRIG, чтобы на 1 секунду удержать Э0 = 1, думал что одиночный импульс на Э0 может блокироваться в момент изменения "меню". После отработки ТР переменной Э0 присваивается 0. Но, как сказал Дименсий похоже дело в том, что надо прописывать переход на основной экран по изменению переменной с каждого экрана программы.

Sergej_
02.02.2024, 16:54
Делал давно правда , как раз экран аварий , все работало. Посмотрю сейчас, возможно проект удалил уже.

Ps: Да. все верно Dimensy написал. Посмотрел сейчас нужно прописывать переходы со всех экранов, на нужный .

товарищ
02.02.2024, 17:10
Делал давно правда , как раз экран аварий , все работало. Посмотрю сейчас, возможно проект удалил уже.

Ps: Да. все верно Dimensy написал. Посмотрел сейчас нужно прописывать переходы со всех экранов, на нужный .
Спасибо, а то пытаюсь осуществить неосуществимое уже второй день.
Сделал переход с каждого экрана, всё получилось.

StoneCold
07.02.2024, 15:24
Здравствуйте, подскажите есть ли возможность в эту тему воткнуть ротацию насосов по времени, если да, то как?

kondor3000
07.02.2024, 16:10
Здравствуйте, подскажите есть ли возможность в эту тему воткнуть ротацию насосов по времени, если да, то как?

Воткнуть можно, только у вас алгоритм кривой, может лучше готовый проект взять? И немного доработать.
Вот пара вариантов
https://owen.ru/forum/showthread.php?t=25068&page=73#728
https://owen.ru/forum/showthread.php?t=26216&page=342#3413

Mikhail
03.03.2024, 12:18
Здравствуйте!
ПР205. Ввожу на дислее переменные уставки. Запускаю программу на исполнение - первый цикл исполняется со старыми уставками. Повторный запуск происходит с новыми уставками. Как сделать, чтобы уставки новые отрабатывались сразу после смены и не отключать ПР205 от эл. сети?

kondor3000
03.03.2024, 12:29
Здравствуйте!
ПР205. Ввожу на дислее переменные уставки. Запускаю программу на исполнение - первый цикл исполняется со старыми уставками. Повторный запуск происходит с новыми уставками. Как сделать, чтобы уставки новые отрабатывались сразу после смены и не отключать ПР205 от эл. сети?

Значит они у вас записываются не сразу, зависит как сделано в программе. Выложите проект или кусок с одной переменной.

Dimensy
03.03.2024, 12:43
Здравствуйте!
ПР205. Ввожу на дислее переменные уставки. Запускаю программу на исполнение - первый цикл исполняется со старыми уставками. Повторный запуск происходит с новыми уставками. Как сделать, чтобы уставки новые отрабатывались сразу после смены и не отключать ПР205 от эл. сети?

А что значит "запуская программу на исполнение"? Вы, что внутренним переключателем останавливаете выполнение программы? Тогда все нормально, энергонезависимые переменные записываются в конце цикла

Mikhail
03.03.2024, 12:53
Кусочек схемы

Mikhail
03.03.2024, 13:00
Внешней кнопкой управления.

Mikhail
03.03.2024, 13:03
Программа должна выполнить заданное количество циклов и остановиться.

Mikhail
03.03.2024, 13:10
Если вводишь переменные и потом выключишь питание ПР, и вкл. его то исполняется с новыми уставками. Мне нужно чтобы искючить такую ситуацию с выключением ПР.

kondor3000
03.03.2024, 13:14
Программа должна выполнить заданное количество циклов и остановиться.

Во первых программа не может остановиться, она работает по кругу, циклами. Часть кода у вас управляется с кнопки, остальная работает всегда.
Соответственно, присваивать надо, там где работает всегда.
Так какая переменная у вас не сразу запускается?

Mikhail
03.03.2024, 13:24
Я знаю, и понимаю это. Когда нет запуска от внешней кнопки на выходах ПР выключенное состояние.

Mikhail
03.03.2024, 17:31
Спасибо, всем кто откликнулся! Проблему решил. Оказалось, что в программе пользователя нужно при запуске от внешней кнопки необходимо сброить счетчик, чтобы в него записалось новое значение и после небольшой задержки дать разрешение на исполнение программы пользователя.

P.S.Когда в менеджере экранов (панель свойств) в разделе контроль ввода устанавливаешь значения от 1 допустим до 20, но при программировании в переменной выводится 0. Я считаю, что в переменную при программировании должно записываться минимальное указанное значение т.е 1. Но этот вопрос скорее всего нужно адресовать системщикам.

FPavel
03.03.2024, 21:34
Ввод переменной в самом общем виде осуществляется не только с локальной панели, но и из панели оператора, из облака, из другой вышестоящей системы.

Поэтому правильным будет в самой программе диагностировать такие параметры на допустимый диапазон, а при выходе за границы или корректировать (ограничивать) значение или формировать сигнал ошибки с остановкой всего процесса.
Т.е. это проблема программы пользователя, а не прошивки.

grenz
08.03.2024, 15:13
Уважаемый Сергей308. Пишу свою первую программу на ОЛ. Ваш макрос "Тапки" мне очень помог в выполнении похожей задачи. Правда сделал на ST. Прошу Вашей рецензии.
*Новичкам не скачивать! Я сам новичок, поэтому без оценки специалистов моим макросом лучше не пользоваться. А макрос от Сергей308 проверен временем.

dido
08.03.2024, 18:32
Здравствуйте, подскажите как импортировать сетевые переменные из файла csv? Экспорт есть, импорта не вижу. Мне нужно из другого проекта перенести переменные для slave порта. Реле ПР200.

1exan
08.03.2024, 19:23
Здравствуйте, подскажите как импортировать сетевые переменные из файла csv? Экспорт есть, импорта не вижу. Мне нужно из другого проекта перенести переменные для slave порта. Реле ПР200.

Импорта нет

Dimensy
08.03.2024, 23:28
Здравствуйте, подскажите как импортировать сетевые переменные из файла csv? Экспорт есть, импорта не вижу. Мне нужно из другого проекта перенести переменные для slave порта. Реле ПР200.

Там, вроде, шаблон можно создать. А, нет, это только для мастера. Не повезло

kondor3000
09.03.2024, 11:16
Уважаемый Сергей308. Пишу свою первую программу на ОЛ. Ваш макрос "Тапки" мне очень помог в выполнении похожей задачи. Правда сделал на ST. Прошу Вашей рецензии.
*Новичкам не скачивать! Я сам новичок, поэтому без оценки специалистов моим макросом лучше не пользоваться. А макрос от Сергей308 проверен временем.

Сергей308 у нас противник ST, а ваш код в симуляции можно спокойно обмануть, если быстро нажать I8, потом I7, 74182
то срабатывает выход Q7, а должен Q8. Быстродействия не хватает
Тоже самое, если нажать I5, потом I4.
Всё можно сделать намного проще и без Case.

grenz
09.03.2024, 15:49
Всё можно сделать намного проще и без Case.
Рано мне еще пускаться в обсуждения и споры. Согласен по поводу быстродействия. И Ваш вариант красивее.
Попробовал сначала подать 1 на входы, потом запустил симуляцию. Вот что получилось:74190

Dimensy
09.03.2024, 16:02
Рано мне еще пускаться в обсуждения и споры. Согласен по поводу быстродействия. И Ваш вариант красивее.
Попробовал сначала подать 1 на входы, потом запустил симуляцию. Вот что получилось:74190

Ну, тогда, вот два варианта

kondor3000
09.03.2024, 16:13
Рано мне еще пускаться в обсуждения и споры. Согласен по поводу быстродействия. И Ваш вариант красивее.
Попробовал сначала подать 1 на входы, потом запустил симуляцию. Вот что получилось:

Естественно, реальные сигналы, должны быть с разницей во времени, хоть несколько ms, а не все одновременно)
Все остальные варианты 3 и 4 просто дают приоритет последним сигналам, а не выбирают первый включённый, думаю, так в реале не должно быть.

EFrol
09.03.2024, 16:50
Прошу прощения. А вот так можно?


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

var_input //объявление входных переменных
I1,I2,I3,I4,I5,I6,I7,I8:bool;
end_var

var_output //объявление выходных переменных
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8: bool;
end_var

if (I1 or I2 or I3 or I4 or I5 or I6 or I7 or I8) xor
(Q1 or Q2 or Q3 or Q4 or Q5 or Q6 or Q7 or Q8) then
Q1 := I1; Q2 := I2; Q3 := I3; Q4 := I4; Q5 := I5; Q6 := I6; Q7 := I7; Q8 := I8;
end_if

end_function_block

grenz
09.03.2024, 18:24
Ну, тогда, вот два варианта

cd32 мне пока не под силу. А так, да, работает. Но пока не понимаю, как...

grenz
09.03.2024, 18:44
Прошу прощения. А вот так можно?
]

Красиво, но, все-таки, немного некорректно. В режиме эмуляции, до старта, даем 1 на несколько входов (I1,I2,I5). Запускаем эмуляцию, и на выходах (Q1,Q2,Q5) имеем 1. А задача несколько иная: выдать один и только один сигнал.

kondor3000
09.03.2024, 18:49
cd32 мне пока не под силу. А так, да, работает. Но пока не понимаю, как...

cd32 - Шифратор. Преобразует позиционный код в двоичный код.74196
Например при включении 7 бита, в маске M_Al=128, а cd32 выдаёт число M_Nas=7
M_Nas:=cd32(M_Al);

EFrol
09.03.2024, 18:52
Красиво, но, все-таки, немного некорректно. В режиме эмуляции, до старта, даем 1 на несколько входов (I1,I2,I5). Запускаем эмуляцию, и на выходах (Q1,Q2,Q5) имеем 1. А задача несколько иная: выдать один и только один сигнал.

При возникновении нескольких фронтов (спадов) одновременно придется вводить приоритет:


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

var_input //объявление входных переменных
I1,I2,I3,I4,I5,I6,I7,I8:bool;
end_var

var_output //объявление выходных переменных
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8: bool;
end_var

if (I1 or I2 or I3 or I4 or I5 or I6 or I7 or I8) xor
(Q1 or Q2 or Q3 or Q4 or Q5 or Q6 or Q7 or Q8) then
Q1 := I1; if I1 then return; end_if
Q2 := I2; if I2 then return; end_if
Q3 := I3; if I3 then return; end_if
Q4 := I4; if I4 then return; end_if
Q5 := I5; if I5 then return; end_if
Q6 := I6; if I6 then return; end_if
Q7 := I7; if I7 then return; end_if
Q8 := I8; if I8 then return; end_if
end_if

end_function_block

Сергей0308
09.03.2024, 19:44
Сергей308 у нас противник ST, а ваш код в симуляции можно спокойно обмануть, если быстро нажать I8, потом I7, 74182
то срабатывает выход Q7, а должен Q8. Быстродействия не хватает
Тоже самое, если нажать I5, потом I4.
Всё можно сделать намного проще и без Case.

Мне кажется, что это логично, в смысле, как можно поддерживать то, в чём не разбираешься?! Вот, например, Вы видели выступления муравьёв в поддержу теории относительности?

Сергей0308
09.03.2024, 21:31
ну еще пару сотен миллионов лет и выступят)) а может и выступают, просто мы не понимаем
tcp же они освоили еще ДО динозавров
https://habr.com/ru/articles/425089/

Всё ясно, в смысле, людям надо учиться у муравьёв!

grenz
10.03.2024, 17:41
вот тоже


case b of 1,2,4,8,16,32,64,128:
q := b;
end_case


Всё, я поплыл. Не могу пока осознать в голове, как этот case работает.
Понимаю, что список в case побитовый... дальше ступор.

EFrol
10.03.2024, 17:51
Это аналогично следующему:


if b=1 or b=2 or b=4 or b=8 .... then
a := b;
end_if


Т.е. любое значение имеющее один единственный бит равный 1-е, будет защелкнуто в a-переменной.
Отсюда, два и более бит, равные 1-е защелкнуты не будут (игнорирование).

МихаилГл
10.03.2024, 17:56
Это аналогично следующему:


if b=1 or b=2 or b=4 or b=8 .... then
a := b;
end_if


Т.е. любое значение имеющее один единственный бит равный 1-е, будет защелкнуто в a-переменной.
Отсюда, два и более бит, равные 1-е защелкнуты не будут (игнорирование).

Неправильно перевели, тут надо через els if, иначе на всё числа будет реагировать.

Блин, это не биты, отзываю замечание...)

Сергей0308
10.03.2024, 21:10
Могу добавить, что если понадобится обратная логика, в смысле, "кто последний встал, того и тапки", вот здесь обсуждали:
https://owen.ru/forum/showthread.php?t=12691&page=62
Там ещё много чего есть:
https://owen.ru/forum/showthread.php?t=12691&page=63

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

Cs-Cs
12.03.2024, 13:54
Nsft Какие ужасные и непонятные имена переменных.
Внешне всё нормально. НО! У Owen Logic есть важное отличие от ПЛК: если в OwenLogic переменная нигде не используется - то она не обрабатывается ВООБЩЕ. Даже сетевая на считывание.
Поэтому, если sum_1 (ужасное имя) нигде не используется - всё будет по нулям. Для теста надо вывести её хоть на экран.

Nsft
12.03.2024, 13:57
Данная переменная отображается на экране, результат тот же.

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

На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра, 74282
и их передать куда то, где можно пересчитать.
Вот тема https://owen.ru/forum/showthread.php?t=36007&page=2&highlight=WB-MAP3e

Cs-Cs
12.03.2024, 14:01
А она должна быть не равна нулю? Что через другие программы видно в ней?

Cs-Cs
12.03.2024, 14:05
На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра, и их передать куда то, где можно пересчитать.
Вот тема https://owen.ru/forum/showthread.php?t=36007&page=2&highlight=WB-MAP3e
Откуда там 64 бита? Все регистры у WirenBoard в 16 или 32 бита, обычные (кроме накопленных). Он же напряжения читает 32-юитными регистрами нормально. И на его картинке написано u32 или s32 - 32 бита.
Вот карта: https://wirenboard.com/wiki/WB-MAP3E_Data_Registers_v.2

kondor3000
12.03.2024, 14:31
Откуда там 64 бита? Все регистры у WirenBoard в 16 или 32 бита, обычные (кроме накопленных). Он же напряжения читает 32-юитными регистрами нормально. И на его картинке написано u32 или s32 - 32 бита.
Вот карта: https://wirenboard.com/wiki/WB-MAP3E_Data_Registers_v.2

Умножать 3 регистр на 2^32 степени и 4 регистр на 2^48 степени вы чем будете? Посмотрите мой скрин или свою ссылку до конца.
Кроме того, читать надо все 4 регистра разом, а ПР даже этого не может.

0x2200
младшая часть — значение оставляем «как есть» : 0хb4df hex = 46303 dec
0x2201
значение умножаем на 2^16 : 0x0dff hex = 3583 dec, 3583 * 65536 = 234815488
0x2202
значение умножаем на 2^32 : 0 * 4294967296 = 0
0x2203
значение умножаем на 2^48 : 0 * 281474976710656 = 0
Суммируем результаты : 46303 + 234815488 + 0 + 0 = 234861791. Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).
В итоге получаем 2348.61791 КВт /час

Cs-Cs
12.03.2024, 14:52
Умножать 3 регистр на 2^32 степени и 4 регистр на 2^48 степени вы чем будете? Ааа!! Точно же! Но у него читается из регистра 0, поэтому я занимался только этой задачей.
А вот WirenBoard я обожаю пламенной любовью как раз в этом ужасном стиле отображения данных. Там вон для модуля измерения 2 каналов 4..20 мА даже масштабирования нет, и чтобы получить миллиамперы, надо умножать значение из регистра на 3.125*10^-2. Это ЖЕСТЬ. Я иногда хочу убить их за такие скрытые сюрпризы, как и здесь.

FPavel
12.03.2024, 18:09
На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра
Я бы решал задачу вывода 64 разрядного числа на экран методами длинной арифметики. На ST это совсем не составит труда.
Пусть имеется 4 регистра по 16 разрядов. Их можно для упрощения перенести в 4 32 разрядных - повысив ёмкость.
Далее, алгоритм вывода числа на экран на псевдокоде

uint x=123456;
char digits[30]; //или сколько разрядов будет занимать число
uint count=0;
do
{
digits[count++] = (x % 10); //остаток от деления на 10
x = x / 10; //целочисленное деление на 10;
}while(x>0);

//теперь в массиве digits цифры выводимого числа в обратном порядке
//вывод массива
for(int i=count; i>0; i--)
putchar(digits[i-1]);


Для длинной арифметики делить можно вычитанием или имитацией деления в столбик - как раз и пригодится свойство превышения разрядности переменных над разрядностью реального содержимого.
Можно и деление на 10 заменить делением на 10^5, что ускорит получение групп цифр для вывода, а последний остаток - выводить отдельно вместе с элементом текст, содержащим символ "точка". Выводить со значащими нулями.
Т.е. вместо одного числа будет выведено 5 при помощи 6 элементов (5 вывод int, 1 вывод text).

Может я чуть сумбурно описал, но алгоритмы длинной арифметики часто используются.

2 в 64 степени = 18 446 744 073 709 551 616, т.е. всего 20 цифр.

FPavel
12.03.2024, 18:16
Если вопрос только в выводе на экран, а не синхронном получении всех разрядов, то задача элементарна.
Сложение и вычитание длинных чисел - тоже очень простое.

Попробуйте реализовать длиннку. Если не получится - в воскресенье могу попробовать сделать вывод значения на экран.

kondor3000
12.03.2024, 19:24
Если вопрос только в выводе на экран, а не синхронном получении всех разрядов, то задача элементарна.
Сложение и вычитание длинных чисел - тоже очень простое.

Попробуйте реализовать длиннку. Если не получится - в воскресенье могу попробовать сделать вывод значения на экран.

Прежде чем что то писать, вы тему по ссылке хотя бы прочитайте и мои посты выше. Когда поймёте о чём речь, тогда и поговорим.
На Лоджике нет языка С, если выкладываете программу, то пишите на ST тогда.
Как считать на ПР200 4 регистра разом?

FPavel
12.03.2024, 19:48
Хорошо, я сейчас сделаю демку на ПР205 для вывода 64 разрядного числа из 4 регистров (переменных) по 16 разрядов. Это не очень трудно.

А как его принять в ПР - не знаю. Если только в этом проблема, то это неразрешимо до исправления разработчиками.

kondor3000
12.03.2024, 19:55
Хорошо, я сейчас сделаю демку на ПР205 для вывода 64 разрядного числа из 4 регистров (переменных) по 16 разрядов. Это не очень трудно.

А как его принять в ПР - не знаю. Если только в этом проблема, то это неразрешимо до исправления разработчиками.

Нужен не только вывод на экран, нужна программа для сложения и умножения больших чисел из 20-30 знаков.
И даже это не решит проблему, так ка нельзя прочитать 4 регистра сразу.

Cs-Cs
12.03.2024, 20:03
...но у него в 32-битном регистре 0. Почему он не читается? Вот куда смотреть надо пока что, а не как его обработать.

FPavel
12.03.2024, 20:06
Вот просто вывод 64 разрядного числа из 4 регистров (переменных) по 16 разрядов каждый.

Брать делитель 10^5 не получится, т.к. возможно переполнение при переносе остатка от деления в следующий разряд.
Но для данного конкретного случая - дробная часть содержит 5 десятичных разрядов можно немного усложнить алгоритм и добиться желаемого.

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

Кроме приёма 4 регистров - проблем не вижу.


Нужен не только вывод на экран, нужна программа для сложения и умножения больших чисел из 20-30 знаков.
И даже это не решит проблему, так ка нельзя прочитать 4 регистра сразу.

Сложение, вычитание больших чисел - это ещё меньшая проблема, чем вывод на экран.

Вот про связь - да, ничего не поделать.

FPavel
12.03.2024, 20:33
И ещё один тестовый вывод - число с фиксированной десятичной точкой (15+5).
Просто добавил ещё одно деление на 10 и потом собрал 5-разрядное число для показа десятичной дроби

Если нужно сложение-вычитание-умножение длинных чисел - могу сделать, только алгоритм Карацубы реализовывать не буду (не умею).

Я прочитал тему по ссылке, но не уяснил проблемы. Там перемещают какие-то байты для получения правильной последовательности байт в принятом 64 разрядном слове. Но это не проблема.

Если сложность в чём-то другом - лучше прямо напишите, не отсылайте к водянистой многостраничной теме.

Dimensy
12.03.2024, 20:35
На ПР у вас ничего не выйдет, он не умеет работать с 64 битными переменными, всё что вы можете прочитать 4 регистра, 74282
и их передать куда то, где можно пересчитать.
Вот тема https://owen.ru/forum/showthread.php?t=36007&page=2&highlight=WB-MAP3e

Так человек читает регистр 0х1300, а он 32 бит со знаком. У вас регистр 0х2200 (64 бит без знака). Или он не то что нужно читает?

kondor3000
12.03.2024, 21:26
И ещё один тестовый вывод - число с фиксированной десятичной точкой (15+5).
Просто добавил ещё одно деление на 10 и потом собрал 5-разрядное число для показа десятичной дроби

Если нужно сложение-вычитание-умножение длинных чисел - могу сделать, только алгоритм Карацубы реализовывать не буду (не умею).

Я прочитал тему по ссылке, но не уяснил проблемы. Там перемещают какие-то байты для получения правильной последовательности байт в принятом 64 разрядном слове. Но это не проблема.

Если сложность в чём-то другом - лучше прямо напишите, не отсылайте к водянистой многостраничной теме.

Если сделаете умножение и сложение 20 разрядных чисел, будет здорово, переставить байты не проблема в целочисленном. Останется только приём 4 регистров, но это ТС должен проверить (сделать).

kondor3000
12.03.2024, 21:29
Так человек читает регистр 0х1300, а он 32 бит со знаком. У вас регистр 0х2200 (64 бит без знака). Или он не то что нужно читает?

Весь и вопрос в том, что часть работает и читается (16 и 32 разрядные), а часть проблема с чтением (64 разрядные) с 0х2200 по 0х2203,
не считая остального, умножение, сложение 20 разрядных чисел и деление 20 разрядного на 10^5, а потом и вывод на экран,
которое возможно решить, как оказалось.

FPavel
12.03.2024, 22:40
Дополнил сложением длинных чисел.

Искренне сомневаюсь в необходимости умножения длинных чисел - физический смысл величины [куб.м*куб.м] не понятен.

Довольно просто сделать вычитание длинных чисел, умножение длинного на короткое, деление длинного на короткое, чуть сложнее сделать умножение длинных чисел. Деление длинных чисел - сложновато, но возможно.

Всё требует времени - и отладка длинных вычислений. Мне не хочется реализовывать ради реализации.

Думаю, что лучшим вариантом будет, если Nsft сможет принять эти 4 регистра и пояснит, какие вычисления требуются. И попробует их реализовать. Если не сможет - завтра вечером после работы попробую.

Идея вычислений - имеем массив, в котором каждый элемент использует половину разрядов. При операциях проверяется старшая половина и, если она не нулевая, то делается перенос в следующий элемент. Все операции (сложение, вычитание, умножение, деление) выполняются по алгоритму "на бумаге в столбик". Единственно, при делении приходится следить, чтобы перенос не вызвал переполнения разрядной сетки (так не получилось сразу делить на 10^5).

kondor3000
13.03.2024, 08:02
Дополнил сложением длинных чисел.

Искренне сомневаюсь в необходимости умножения длинных чисел - физический смысл величины [куб.м*куб.м] не понятен.
.
Еще раз, что надо посчитать, вот скрин 74299

0x2200
младшая часть — значение оставляем «как есть» : 0хb4df hex = 46303 dec (может быть до 65535)
0x2201
значение умножаем на 2^16 : 0x0dff hex = 3583 dec, 3583 * 65536 = 234815488 (может быть до 4294901760)
0x2202
значение умножаем на 2^32 : 0 * 4294967296 = 0 (сейчас 0, а будет число до 5 знаков, например 65535 * 4294967296=281470681743360 )
0x2203
значение умножаем на 2^48 : 0 * 281474976710656 = 0 (сейчас 0, а будет число до 5 знаков, например 65535 * 281474976710656=18446462598732840960 )
Суммируем результаты : 46303 + 234815488 + 0 + 0 = 234861791. Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).
В итоге получаем 2348.61791 КВт /час

65535+4294901760+281470681743360+18446462598732840 960=18446744073709551615 - максимально возможное 20-значное число
умноженное на 0.00001=184467440737095.51615

capzap
13.03.2024, 08:51
Еще раз, что надо посчитать, вот скрин 74299

0x2200
младшая часть — значение оставляем «как есть» : 0хb4df hex = 46303 dec
0x2201
значение умножаем на 2^16 : 0x0dff hex = 3583 dec, 3583 * 65536 = 234815488
0x2202
значение умножаем на 2^32 : 0 * 4294967296 = 0 (сейчас 0, а будет число до 5 знаков)
0x2203
значение умножаем на 2^48 : 0 * 281474976710656 = 0 (сейчас 0, а будет число до 5 знаков)
Суммируем результаты : 46303 + 234815488 + 0 + 0 = 234861791. Сумму умножаем на 0.00001 (переносим запятую на 5 знаков влево).
В итоге получаем 2348.61791 КВт /час
ну, каждый регистр по отдельности перевести во флоат и умножить на 0.00001, 0.65536, 42949.67296 и 2814749767.10656 соответственно, далее всё сложить

kondor3000
13.03.2024, 08:57
ну, каждый регистр по отдельности перевести во флоат и умножить на 0.00001, 0.65536, 42949.67296 и 2814749767.10656 соответственно, далее всё сложить

Как вы в Лоджике с такими числами работать будете? Работать надо с LREAL и LWORD иначе вы просто потеряете часть знаков.
С целочисленными ещё можно как предложил FPavel , с обычным REAL вообще не получится с 3 и 4 регистром пересчитать.

capzap
13.03.2024, 09:02
Как вы в Лоджике с такими числами работать будете? Работать надо с LREAL и LWORD иначе вы просто потеряете часть знаков.

т.е. Вас беспокоит сколько знаков после запятой когда целая часть числа перевалит за 2814749767?

kondor3000
13.03.2024, 09:23
т.е. Вас беспокоит сколько знаков после запятой когда целая часть числа перевалит за 2814749767?

Во первых считать надо точно, это счётчик расхода, во вторых потерять вы можете не только посля запятой, но и перед запятой.
Обычный REAL больше 5 знаков до запятой, тоже может потерять.

p-nik
13.03.2024, 14:02
Добрый день.
Подскажите, макросы работают в общем цикле (как вызов Fb в обычном ПЛК) или как-то отдельно?

kondor3000
13.03.2024, 14:10
Добрый день.
Подскажите, макросы работают в общем цикле (как вызов Fb в обычном ПЛК) или как-то отдельно?

В общем цикле, макросы на FBD, это ФБ на CFC (или ST).

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

Попробуйте считывать как два 32-битных регистра, потом пропустить через макрос rDIV (деление 64-битных чисел представленных как 2 32-битных)
Он, кстати, покажет остаток от деления, который можно отображать как десятичную часть.
74312


function_block rDIV

var_input
x1h : udint;
x1l : udint;
x2h : udint;
x2l : udint;
end_var

var_output
QH : udint;
QL : udint;

MH : udint;
ML : udint;
end_var

var
cnt : udint;
end_var

if x2h + x2l = 0 then return; end_if

cnt := 1; QH := 0; QL := 0;

while x2h < 2147483648 do
x2h := shl(x2h, 1);
if x2l > 2147483647 then x2h := x2h + 1; end_if
x2l := shl(x2l, 1); cnt := cnt + 1;
end_while

while cnt > 0 do
QH := shl(QH, 1);
if QL > 2147483647 then QH := QH + 1; end_if
QL := shl(QL, 1);

if x1h > x2h then
x1h := x1h - x2h; QL := QL + 1;
if x1l >= x2L then
x1l := x1l - x2l;
else
x1l := x2l - x1l; x1l := 4294967295 - x1l; x1l := x1l + 1;
x1h := x1h - 1;
end_if
elsif x1h = x2h then
if x1l >= x2l then
x1h := 0; x1l := x1l - x2l; QL := QL + 1;
end_if
end_if

x2l := shr(x2l, 1);
if x2h > shl(shr(x2h, 1), 1) then x2l := x2l + 2147483648; end_if
x2h := shr(x2h, 1);

cnt := cnt - 1;
end_while
MH := x1h; ML := x1l;

end_function_block

p-nik
13.03.2024, 15:41
Подскажите, в чем может быть ошибка в программе макроса?
переменные P1_start и P2_Start должны запускать c интервалом в 5 сек (задается отдельно), но фактически они запускаются только в разные циклы.
Если выполнять программу в основном листе, то все работает.
Есть ли особенности хранения переменных внутри макроса?
74321

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

А если так:
74322

p-nik
13.03.2024, 16:23
Тогда, нажимаю старт - загораются оба с разностью в цикл.
делаю сброс-сет старт - загораются как надо

kondor3000
13.03.2024, 16:34
Тогда, нажимаю старт - загораются оба с разностью в цикл.
делаю сброс-сет старт - загораются как надо

Было бы проще выложить ваш проект, чтобы не тратить время на перерисовку со скрина ( проблема скорее всего в переменной, которая не сохраняется в макросе)
Возможно надо поставить энергонезависимость.

Sergej_
13.03.2024, 16:34
Тогда, нажимаю старт - загораются оба с разностью в цикл.
делаю сброс-сет старт - загораются как надо
Вы бы задачу поподробней изложили. Включение P2_start через 5 сек после P1_start по фронту включения можно проще сделать , не совсем понятно со сбросом. У Вас сейчас сброс происходит по снятию сигнала START .

p-nik
13.03.2024, 16:38
я выложил упрощенную версию моей программы. Задача была - блокировка запуска одновременно 2 и более насосов.
Сейчас условие блокировки поставил на тригеры и все теперь работает.
74323

Sergej_
13.03.2024, 16:45
По сути задача задержки включения второго насоса относительно первого , верно?

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

На основе макроса rDIV можно сделать макрос dig64, который разложит 64-битное число на десятичные цифры до любого разряда:


function_block dig64

var_input
xH : udint;
xL : udint;
end_var

var_output
d0 : udint;
d1 : udint;
d2 : udint;
d3 : udint;
d4 : udint;
d5 : udint;
d6 : udint;
d7 : udint;
d8 : udint;
d9 : udint;
d10 : udint;
d11 : udint;
d12 : udint;
d13 : udint;
d14 : udint;
d15 : udint;
d16 : udint;
d17 : udint;
d18 : udint;
d19 : udint;
d20 : udint;
d21 : udint;
d22 : udint;
d23 : udint;
d24 : udint;
d25 : udint;
d26 : udint;
d27 : udint;
d28 : udint;
d29 : udint;
d30 : udint;
end_var

var
div : rDIV;
qH : udint;
qL : udint;
end_var

div(x1h:=xH, x1l:=xL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d0);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d1);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d2);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d3);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d4);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d5);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d6);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d7);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d8);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d9);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d10);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d11);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d12);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d13);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d14);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d15);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d16);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d17);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d18);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d19);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d20);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d21);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d22);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d23);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d24);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d25);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d26);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d27);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d28);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d29);
div(x1h:=qH, x1l:=qL, x2h:=0, x2l:=10, QH=>qh, QL=>ql, ML=>d30);
end_function_block


74324