Страница 1 из 2

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

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

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

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

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

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

Добавлено: 02.12.2016{, 23:45}
Rovki
Прямое значение на пин 5 ,а инверсное на пин 6

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

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

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

Добавлено: 03.12.2016{, 00:05}
Олег
На мой взгляд аналог if это компаратор, правда в си я не знаток.

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

Добавлено: 03.12.2016{, 00:50}
Dev1
Олег писал(а):На мой взгляд аналог if это компаратор, правда в си я не знаток.
Можно сказать и так, только очень урезанный. С 1 условием и 1 результатом, причем булейным.

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

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

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

Добавлено: 03.12.2016{, 09:34}
Rovki
Аналог IF это SEL

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

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

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

Добавлено: 03.12.2016{, 10:27}
Rovki
вот sel- тернарная,условная операция сравнения

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

Добавлено: 03.12.2016{, 11:00}
Олег
Я так понял что топикстартера возможности FBD в FLProg интересуют, а не языка FBD в общем.

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

Добавлено: 03.12.2016{, 11:07}
Rovki
Если в FLprog нет SEL ,то нужно сделать а пока можно на элементах
или использовать мультиплексор

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

Добавлено: 03.12.2016{, 11:15}
Rovki
Переключатель свитч - это и есть SEL ,он работает с аналоговыми сигналами на входе в том числе INT

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

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

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

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

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

Добавлено: 03.12.2016{, 14:43}
Dev1
Компаратор и есть условие if. Например if (temp < 50) {оператор 1} else {оператор2}. Ставим компаратор на входе верхнем переменная temp, на нижнем константа 50 и выбираем условие <. Если условие выполнено то получаем на выходе лог 1, далее цепляем другие блоки что бы выполнить оператор 1. Пока условие не выполнено на выходе компаратора будет 0, т.е. else и тут уже работаем с 0 что бы выполнить оператор 2. В этом есть некоторое неудобство переноса с си на блочную систему.
Грубо говоря компаратором мы получаем только подтверждение выполнение условия 1, либо не выполнения 0.

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

Добавлено: 03.12.2016{, 17:31}
Rovki
Олег писал(а):Я про это и говорил
Вы про информацию по входам или про управление переключателя .По входам любой тип ,управление булевое ,так как 2 входа ...?????????

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

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

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

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

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

Добавлено: 03.12.2016{, 23:18}
Олег
Да, цифру, номер входа 0,1,2 и т.д. Я писал выше, на выход компаратора вешаете переменную со входом разрешения записи. выход компартора подключаете к EN, а на вход данных ставите константы 0,1,2 и т.д.