PDA

Просмотр полной версии : Сравнение чисел с плавающей запятой на МЕНЬШЕЕ значение



Алексей 1
24.02.2019, 16:33
Добрый день!! Помогите сделать макрос на сравнение чисел с плавающей запятой на МЕНЬШЕЕ значение.

На ПР 200 приходит регулирующее напряжение 0-10. Нужно чтобы при понижении напряжения меньше заданного значения появлялась 1 или 0.

melky
24.02.2019, 17:32
на большее сравнивать не пробовали поменяв местами переменные ?

Алексей 1
24.02.2019, 19:02
Конечно пробовал )) у меня логика не работает в этом случае....
у меня при росте напряжения от 0 до 10 В должно происходить следуюшее....0-1В отключено....1-2В Включено ожидание, 2В Старт роботы вентилятора и с 2 до 10 его регулировка туда и обратно....
Проблемма именно в остановке... я не как не могу осилить логику так чтобы при понижении ниже 2 вольт вент отключался...

Василий Кашуба
24.02.2019, 19:07
Конечно пробовал )) у меня логика не работает в этом случае....
у меня при росте напряжения от 0 до 10 В должно происходить следуюшее....0-1В отключено....1-2В Включено ожидание, 2В Старт роботы вентилятора и с 2 до 10 его регулировка туда и обратно....
Проблемма именно в остановке... я не как не могу осилить логику так чтобы при понижении ниже 2 вольт вент отключался...
А проект ваш посмотреть можно?

rovki
24.02.2019, 19:36
Конечно пробовал )) у меня логика не работает в этом случае....
у меня при росте напряжения от 0 до 10 В должно происходить следуюшее....0-1В отключено....1-2В Включено ожидание, 2В Старт роботы вентилятора и с 2 до 10 его регулировка туда и обратно....
Проблемма именно в остановке... я не как не могу осилить логику так чтобы при понижении ниже 2 вольт вент отключался...

Тут скорее всего одним сравнением не обойтись ,нужен еще триггер .

Алексей 1
24.02.2019, 19:50
Да конечно!! Только пожалуйста не судите строго ЭТО ЧЕРНОВИК!!

Сергей0308
24.02.2019, 20:16
Да конечно!! Только пожалуйста не судите строго ЭТО ЧЕРНОВИК!!

Если хотите в реальных физических величинах(вольтах) получать значение в программу, поставьте здесь "0"

41402

Василий Кашуба
24.02.2019, 21:13
Да конечно!! Только пожалуйста не судите строго ЭТО ЧЕРНОВИК!!
Не знаю, строго это для вас или нет, но почему у вас регуляторы ПИД работают по двадцать секунд, что вы хотите за это время отрегулировать?
Глядя на ваш проект, проще думаю попросить ТЗ, чем разбираться в проекте.

Алексей 1
24.02.2019, 21:56
Да все так и должно быть ))) На каждом этапе своя скорость вентилятора и поэтому так много пидов и таймеров (всего их будет штук 6)...... с этим все правильно...
Проблема не в этом...

Алексей 1
24.02.2019, 21:58
Если хотите в реальных физических величинах(вольтах) получать значение в программу, поставьте здесь "0"

41402

Понял спасибо ...учту.. но что по сути вопроса???

Василий Кашуба
24.02.2019, 22:11
Да все так и должно быть ))) На каждом этапе своя скорость вентилятора и поэтому так много пидов и таймеров (всего их будет штук 6)...... с этим все правильно...
Проблема не в этом...
И что одним регулятором нельзя разные скорости на вентилятор задавать?
Проблема с постановкой задачи.

Сергей0308
24.02.2019, 22:45
Если, как Вы пишите, надо скорость вентилятору задавать пропорционально управляющему напряжению на входе, то здесь и макроса SCALE_L с избытком хватит:
http://www.owen.ru/forum/showthread.php?t=12691&page=49

Достаточно такого:

41403

Алексей 1
24.02.2019, 23:34
Коллеги вопрос не в скорости вентилятора!!!! И с пидами там все правильно!!! Соответственно Тех. заданию ))) Я ж даже красным обвел где и что у меня не получается решить))
Там поле большое!!! Обратите внимание пожалуйста у меня уже мозг вскипел...... уверен что проблема решается просто но вот как???!!

Сергей0308
24.02.2019, 23:40
Коллеги вопрос не в скорости вентилятора!!!! И с пидами там все правильно!!! Соответственно Тех. заданию ))) Я ж даже красным обвел где и что у меня не получается решить))
Там поле большое!!! Обратите внимание пожалуйста у меня уже мозг вскипел...... уверен что проблема решается просто но вот как???!!

Так Вам уже верно ответили, поменяйте элементы сравнения местами, если значение будет менее уставки, на выходе "1":


41404

Или что бы элементарное дошло, надо всем повторить этот ответ?

rovki
24.02.2019, 23:59
Коллеги вопрос не в скорости вентилятора!!!! И с пидами там все правильно!!! Соответственно Тех. заданию ))) Я ж даже красным обвел где и что у меня не получается решить))
Там поле большое!!! Обратите внимание пожалуйста у меня уже мозг вскипел...... уверен что проблема решается просто но вот как???!!

Решать ваши куски задания не интересно ,а главное бесполезно не видя картины (ТЗ) целиком .По вопросу вам ответили ,но вас не устроило , значит такой был вопрос. Может вам вообще гистерезис нужен ?
Вы такое большое поле создали для проекта ,будто автоматизировать космодром собираетесь, а вопросы простые задаете ...как то не вяжется ...:cool:

Алексей 1
25.02.2019, 00:20
Если сделать так как вы все советуете то на элементе 1 всегда 1 и тогда элемент 2 всегда включен ........ может я что-то неправильно понимаю (((

melky
25.02.2019, 10:25
ИМХО, я бы 0-10В превратил бы в шаги с нужной дискретностью, например 1В или 0,5В. А что выполнять при каждом шаге решать вам.

например Входное напряжение делим на 10 без остатка, вот вам и шаг 1В в целочисленном варианте, потом делайте все что вам нужно исходя из номера шага.

Алексей 1
25.02.2019, 17:05
ИМХО, я бы 0-10В превратил бы в шаги с нужной дискретностью, например 1В или 0,5В. А что выполнять при каждом шаге решать вам.

например Входное напряжение делим на 10 без остатка, вот вам и шаг 1В в целочисленном варианте, потом делайте все что вам нужно исходя из номера шага.

а по подробнее можно... я что то плохо представляю как это сделать...если можно пример...

rovki
25.02.2019, 18:00
Если сделать так как вы все советуете то на элементе 1 всегда 1 и тогда элемент 2 всегда включен ........ может я что-то неправильно понимаю (((

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

melky
26.02.2019, 15:14
Алексей 1 если у вас шаг 1В, то просто сделайте float_to_int и вы получите только целые числа. А там уже от номера делайте свою программу как необходимо.

Если шаг нужен меньше, например 0,5В то делаете округление float до 1 знака и сравниваете опять же нужные значения.

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

capzap
06.07.2020, 20:44
наверное для Вас это тайна, поэтому попробую приоткрыть завесу, в верху страницы есть красная линия с надписью форум, под ней зеленая, там есть много слов. Так вот нажав на фразу Сообщения за день Вы попадает на страницу, которую обычно смотрят продвинутые пользователи, это те которые в состоянии ответить на вопросы. Поэтому не надо писать во всех темах один и тот же по смыслу вопрос и конечно создавать в каждом разделе тему