аналог оператора If в языке FBD

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Denis111
Рядовой
Сообщения: 10
Зарегистрирован: 29.10.2016{, 09:05}
Репутация: 0
Откуда: Рыбинск

аналог оператора If в языке FBD

#1

Сообщение Denis111 » 02.12.2016{, 23:40}

Друзья, чего то я туплю, подскажите пожалуйста такую простую вещь для языка FBD - как выставить единицу на том или ином пине в зависимости от значения переменной (boolean). Т.е. если если переменная принимает значение 1, то зажигаем светодиод на пине 5, а если 0 - то на пине 6. Думал переключатель DMS использовать, но он не принимает на вход Set булеву переменную.

zhulen820
Сержант
Сообщения: 193
Зарегистрирован: 29.08.2016{, 22:44}
Репутация: 6
Откуда: Серпухов
Имя: Александр

аналог оператора If в языке FBD

#2

Сообщение zhulen820 » 02.12.2016{, 23:45}

Выход pin6 надо просто сделать инверсным. Правой мышкой по выходу и нажать 'инвертировать'

Добавлено (02.12.2016, 23:45)
---------------------------------------------
Выход pin6 надо просто сделать инверсным. Правой мышкой по выходу и нажать 'инвертировать'

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#3

Сообщение Rovki » 02.12.2016{, 23:45}

Прямое значение на пин 5 ,а инверсное на пин 6
Электронщик до мозга костей и не только

Denis111
Рядовой
Сообщения: 10
Зарегистрирован: 29.10.2016{, 09:05}
Репутация: 0
Откуда: Рыбинск

аналог оператора If в языке FBD

#4

Сообщение Denis111 » 02.12.2016{, 23:54}

Понял, спасибо. В общем то и на одном пине можно сделать оба светодиода - один на GND посадить, а другой на +.
А если у меня переменная Integer, и в зависимости от числа разные варианты действий - переключателем DMS надо пользоваться?

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#5

Сообщение Олег » 03.12.2016{, 00:05}

На мой взгляд аналог if это компаратор, правда в си я не знаток.

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

аналог оператора If в языке FBD

#6

Сообщение Dev1 » 03.12.2016{, 00:50}

Олег писал(а):На мой взгляд аналог if это компаратор, правда в си я не знаток.
Можно сказать и так, только очень урезанный. С 1 условием и 1 результатом, причем булейным.
Win10-64 FLProg v7.5.2 Portable :fie:

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#7

Сообщение Олег » 03.12.2016{, 01:35}

Dev1 писал(а):С 1 условием и 1 результатом, причем булейным.
Не уверен, но вроде чтобы поставить несколько условий, то и if надо писать несколько раз, так-же как и поставить несколько компараторв. А результаты не булейные можно получить с посощью switch на выходе компаратора.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#8

Сообщение Rovki » 03.12.2016{, 09:34}

Аналог IF это SEL
Электронщик до мозга костей и не только

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#9

Сообщение Олег » 03.12.2016{, 10:10}

Если SEL в смысле Switch, то на входе только бинарные значения. Или вы что-то другое имели ввиду?

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#10

Сообщение Rovki » 03.12.2016{, 10:27}

вот sel- тернарная,условная операция сравнения
Вложения
3569819.jpg
Последний раз редактировалось Rovki 03.12.2016{, 10:29}, всего редактировалось 1 раз.
Электронщик до мозга костей и не только

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#11

Сообщение Олег » 03.12.2016{, 11:00}

Я так понял что топикстартера возможности FBD в FLProg интересуют, а не языка FBD в общем.

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#12

Сообщение Rovki » 03.12.2016{, 11:07}

Если в FLprog нет SEL ,то нужно сделать а пока можно на элементах
или использовать мультиплексор
Вложения
4663266.jpg
Электронщик до мозга костей и не только

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#13

Сообщение Rovki » 03.12.2016{, 11:15}

Переключатель свитч - это и есть SEL ,он работает с аналоговыми сигналами на входе в том числе INT
Вложения
7188098.png
Электронщик до мозга костей и не только

Denis111
Рядовой
Сообщения: 10
Зарегистрирован: 29.10.2016{, 09:05}
Репутация: 0
Откуда: Рыбинск

аналог оператора If в языке FBD

#14

Сообщение Denis111 » 03.12.2016{, 11:25}

Как я понимаю, SWITCH годится только для булевых величин, потому что он выбирает только из двух вариантов.
А если например есть 5 диапазонов какой то переменной и в каждом диапазоне должна быть своя реакция, то как быть? Вроде переключатель мультиплексор [MUX] подходит, но я не понимаю как у него вход настраивать. Там вход для величины Integer, но где прописать что вот в этих пределах Sel передавай величину со входа v0, в этих - в v1 и т.д.?

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#15

Сообщение Олег » 03.12.2016{, 14:04}

Denis111 писал(а):Как я понимаю, SWITCH годится только для булевых величин, потому что он выбирает только из двух вариантов.
Я про это и говорил, чтобы делать не булевое условие  и результат получать не булевый можно поставить компаратор, а на его выход switch
Ваша задача не совсем понятна, но если вы имеете ввиду что у вас на пять возможных входных значений каждому соответствует свое выходное, то можно ставить 5 компараторов, пять блоков switch, с выходов switch запись в переменную, на вход EN которого подается сигнал от блока изменения значения.
 Можно сделать и на мультиплексоре, тогда switch не нужен, а в переменную после компараторов записываются значения от 0 до 4 и это переменная подключается ко входу Sel.

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

аналог оператора If в языке FBD

#16

Сообщение Dev1 » 03.12.2016{, 14:43}

Компаратор и есть условие if. Например if (temp < 50) {оператор 1} else {оператор2}. Ставим компаратор на входе верхнем переменная temp, на нижнем константа 50 и выбираем условие <. Если условие выполнено то получаем на выходе лог 1, далее цепляем другие блоки что бы выполнить оператор 1. Пока условие не выполнено на выходе компаратора будет 0, т.е. else и тут уже работаем с 0 что бы выполнить оператор 2. В этом есть некоторое неудобство переноса с си на блочную систему.
Грубо говоря компаратором мы получаем только подтверждение выполнение условия 1, либо не выполнения 0.
Последний раз редактировалось Dev1 03.12.2016{, 15:28}, всего редактировалось 1 раз.
Win10-64 FLProg v7.5.2 Portable :fie:

Аватара пользователя
Rovki
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

аналог оператора If в языке FBD

#17

Сообщение Rovki » 03.12.2016{, 17:31}

Олег писал(а):Я про это и говорил
Вы про информацию по входам или про управление переключателя .По входам любой тип ,управление булевое ,так как 2 входа ...?????????
Электронщик до мозга костей и не только

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#18

Сообщение Олег » 03.12.2016{, 18:34}

Мы говорим про оператор if. Выше приведенный пример от Dev1:
if (temp < 50) {оператор 1} else {оператор2}
при помощи switch не выполнить, так-как проверку выполнения условия temp < 50 можно сделать только компаратором., а потом уже можно и switch использовать, если значения нужны цифровые или текстовые, а не 0 и 1.

Denis111
Рядовой
Сообщения: 10
Зарегистрирован: 29.10.2016{, 09:05}
Репутация: 0
Откуда: Рыбинск

аналог оператора If в языке FBD

#19

Сообщение Denis111 » 03.12.2016{, 21:49}

По компаратору все понятно, спасибо большое.
Давайте еще разберем вопрос по переключателю мультиплексору MUX - каким образом происходит выбор с какого входа(v0, v1...) передается сигнал, в зависимости от сигнала на входе Sel ? Цифру что ли с номером входа (v0, v1...) на Sel надо передавать?

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 63
Контактная информация:

аналог оператора If в языке FBD

#20

Сообщение Олег » 03.12.2016{, 23:18}

Да, цифру, номер входа 0,1,2 и т.д. Я писал выше, на выход компаратора вешаете переменную со входом разрешения записи. выход компартора подключаете к EN, а на вход данных ставите константы 0,1,2 и т.д.

Ответить

Вернуться в «Спросить у знатоков»