PDA

Просмотр полной версии : Схема для чередования выходов



Mak_dim
03.04.2016, 21:50
День добрый!
Уперся в стену, на СИ такая задача делается минут за 15, сообразить как сделать третий день не могу.

Имеем три входа, появляются и исчезают произвольно. Соответственно им имеем три выхода.
Если вход активен только один, то активен соответствующий ему выход, все время пока активен вход.
Если входов активно два или три, то выходы становятся активны по очереди в порядке появления входов во времени, с постоянной периодичностью, например 1 мин.
Если вход стал неактивен, выход сбрасывается, очередь переходит к следующему активному входу, и из чередования выпадает.
При включении могут быть активны все три входа, тогда чередуем по-порядку, например 1-2-3-1-2-3, стой же периодичность.

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

Надеюсь, что ПР-110 мне хватит?
Спасибо.

lara197a
03.04.2016, 22:06
Как-то не правильно поставлена задача.
области ввода и вывода- вещь постоянно присутствующая и не может появляться и исчезать.
Видимо речь об сигналах появляющихся на входах и какого-то алгоритма включения выходов.
Возьмите к примеру состояние входов и выходов в представлении бит в байте. ну и работайте с ним

Владимир Ситников
03.04.2016, 22:22
Имеем три входа, появляются и исчезают произвольно.

Есть 3 входа, и 3 насоса.
Активные входы указывают на то, какие насосы в ротации.
Один вход активен -- шарашит один насос. Два активно -- шарашат 2, сменяя друг друга.
Так?

rovki
03.04.2016, 22:40
День добрый!
Уперся в стену, на СИ такая задача делается минут за 15, сообразить как сделать третий день не могу.

Имеем три входа, появляются и исчезают произвольно. Соответственно им имеем три выхода.
Если вход активен только один, то активен соответствующий ему выход, все время пока активен вход.
Если входов активно два или три, то выходы становятся активны по очереди в порядке появления входов во времени, с постоянной периодичностью, например 1 мин.
Если вход стал неактивен, выход сбрасывается, очередь переходит к следующему активному входу, и из чередования выпадает.
При включении могут быть активны все три входа, тогда чередуем по-порядку, например 1-2-3-1-2-3, стой же периодичность.

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

Надеюсь, что ПР-110 мне хватит?
Спасибо.
Не знаю как на СИ ,на ОЛ и 5минут достаточно,пока программисты думают .Вариантов может быть много
1.Регистр сдвига ,сделанный хоть на чем ,на з бита .опрашивает 3 входа .На выходе то что вам нужно
2.мультиплексоры опрашивают входа и выдают сигналы на выходы ,
3
4,....вирус закодировал все макросы ,поэтому более красивые варианты показать не могу

Василий Кашуба
03.04.2016, 22:55
Не знаю как на СИ ,на ОЛ и 5минут достаточно,пока программисты думают .Вариантов может быть много
1.Регистр сдвига ,сделанный хоть на чем ,на з бита .опрашивает 3 входа .На выходе то что вам нужно
2.мультиплексоры опрашивают входа и выдают сигналы на выходы ,
3
4,....вирус закодировал все макросы ,поэтому более красивые варианты показать не могу
Анатолий, ты поторопился, а если только один, или два входа включено, то одну или две минуты ни один выход не будет в работе.

rovki
03.04.2016, 22:59
Анатолий, ты поторопился, а если только один, или два входа включено, то одну или две минуты ни один выход не будет в работе.,для этого нужно на генераторе поставить время паузы 0,01сек ,а импульса 59,99:D ,схема не меняется .Тем более я принцип работы дал ,что бы еще 3 дня человек голову не ломал...
А так можно и разрядность регистра менять в зависимости от числа вкл.входов .

Василий Кашуба
03.04.2016, 23:08
,для этого нужно на генераторе поставить время паузы 0,01сек ,а импульса 59,99:D ,схема не меняется .Тем более я принцип работы дал ,что бы еще 3 дня человек голову не ломал...
А так можно и разрядность регистра менять в зависимости от числа вкл.входов .
Совершенно верно, для этого подойдёт схема от AI23605.

Mak_dim
04.04.2016, 09:23
Спасибо, други.

Первая схемка мне понятна, все просто, но не мое совсем.
Вторую схему, что то я не догоняю.
Это типа "макрос" где I1 это число, поскольку за элементом И стоят преобразователи в BOOL?
В этой схемке в нескольких местах мне непонятно .. выход SEL последний-справа внизу идет на вход ИЛИ без преобразования, понятно что непонятно.
Может кто скажет где про эту схемку посмотреть?
Я пока не вижу куска моего алгоритма в ней.


Если на пальцах разобрать мою задачу, то мне все понятно:
Есть сдвиговый регистр на два бита, с тремя ячейками,
Опрос входов наверное по-одному, если нашел активный, то пихает в сдвиговый регистр.
Конвейер сдвигового регистра проталкивает данные к выходу, если выход пока пустой, иначе ждет выдержку времени, (в пустые ячейки проталкиваются номера следующих активных входов).
Это сишный алгоритм.
Сдвиговый регистр проталкивает ячейки на выход, типа FIFO.
Если появился новый активный вход пихаем его в этот конвейер.

rovki
04.04.2016, 11:01
Вы бы задачу обрисовали ,что вам нужно - ротация насосов ,елочная гирлянда ,,,,

Mak_dim
04.04.2016, 11:31
Компрессор с накопителем работает на три независимых ветки разбора, которые подключаются к давлению своими клапанами.
Приоритет у веток это время возникновения сигнала от датчика давления в ветке - (определенное давление). Решено что подключаются ветки к давлению по очереди.
Упало давление в ветке - соответствующий вход стал активным, если в это время нет очереди из других веток, открылся соответствующий клапан . Если очередь есть, то сначала накачаются ветки, которые ждут дольше.
Давление набралось, клапан закрылся. Если есть в очереди следующая ветка, коммутируется её клапан.
Таково условие, может и не очень разумное, но такой алгоритм утвержден.

rovki
04.04.2016, 11:48
Так а причем тут 1 минута .?если следующий включается только когда предыдущий накачался по датчику ...

maximov2009
04.04.2016, 11:53
Добрый день. Маленькое уточнение: Выход остаётся включенным до окончания накачки и сработки реле давления? Или всё таки начинают чередоваться через 1мин если сработало несколько входов, как Вы описале в первом посте?

Mak_dim
04.04.2016, 12:32
Одна минута остается, чередование выходов случается, когда давление набралось или прошла минута.

Mak_dim
04.04.2016, 15:36
Накидал циклический опрос входов,
23622

Выходы мне тоже понятно как сделать.

Помогите, пожалуйста, со сдвиговым регистром.
Требования: хранить буду номер входа диапазон значений 0-3 (два бита)
Тип FIFO на три позиции
Есть возможность загрузить значение в первую ячейку
Есть возможность считать последнюю ячейку
Можно продвинуть весь буфер с потерей последнего значения.

По идее мне нужно поле в шесть бит, только как организовать пока не знаю ((

Алексей Геннадьевич
04.04.2016, 16:31
Компрессор с накопителем работает на три независимых ветки разбора, которые подключаются к давлению своими клапанами.
Приоритет у веток это время возникновения сигнала от датчика давления в ветке - (определенное давление). Решено что подключаются ветки к давлению по очереди.
Упало давление в ветке - соответствующий вход стал активным, если в это время нет очереди из других веток, открылся соответствующий клапан . Если очередь есть, то сначала накачаются ветки, которые ждут дольше.
Давление набралось, клапан закрылся. Если есть в очереди следующая ветка, коммутируется её клапан.
Таково условие, может и не очень разумное, но такой алгоритм утвержден.
Вы бы пневмосхему своей установки принесли, тогда можно что-то предлагать. Что-то мне подсказывает, что пневматику через ж. спроектировали и собрали, а теперь приходится ваять костыли из ПР.
И какие у вас датчики давления? ЭКМ или аналоговые 4-20ма?


4,....вирус закодировал все макросы ,поэтому более красивые варианты показать не могу
Молюсь на админов нашего предприятия.

rovki
04.04.2016, 18:27
вот вам фифо http://www.owen.ru/forum/showthread.php?t=20847&page=4&p=166122&viewfull=1#post166122

Василий Кашуба
05.04.2016, 00:21
...
Вторую схему, что то я не догоняю.
Это типа "макрос" где I1 это число, поскольку за элементом И стоят преобразователи в BOOL?
В этой схемке в нескольких местах мне непонятно .. выход SEL последний-справа внизу идет на вход ИЛИ без преобразования, понятно что непонятно.
Может кто скажет где про эту схемку посмотреть?
Я пока не вижу куска моего алгоритма в ней.
...
Вот эта схема будет опрашивать ваши входа. 23633 Если давление в норме, на входе "1", если низкое- "0". А выход подключите на первый вход макроса. Да в макросе, в блинке выставьте время 1 минута, а третий вход макроса можно не использовать.

maximov2009
05.04.2016, 04:42
Молюсь на админов нашего предприятия.
Вместо молитв использую резервное копирование. Как минимум тройное для ценной информации. Атеист - то есть верю в бога, но посредников между ним и мною не терплю.
А если серьёзно, то мне тоже кажется надо начинать с самой установки. Хотя человек просит помощи по конкретному техзаданию.
Прокрутил идею со стеком, мне кажется здесь изначально заложена бомба в виде одновременного прихода сигнала на несколько входов. Насколько я понял в ОЛ как и в кодесисе обработка идёт слева-направо, сверху вниз. Вот и будет всё время верхний (по схеме вход записываться, если в сработке.
Может лучше будет применить циклическое подключение с опросом соответствующего входа. Всё равно по техзаданию уже задан цикл в 1 минуту. То есть подключаем 1 выход с задержкой (доли секунды), за это время проверяется есть ли запрос на 1 входе. Если есть - отрабатываем 1мин и переключаем на второй, если нет запроса на 1 входе - сразу переключаем на 2 выход по той же схеме и далее по кругу. На мой взгляд это и реализовать проще и работать будет честнее.
А в принципе Алексей Геннадьевич прав - это скорее всего очередные костыли как и у меня, да и я думаю у всех. В принципе то чего проще, по компрессору на линию и все прблемы. Тут и резерв и возможность автономной работы и т.д.. Но убедит в этом начальство - подвиг достойный славы.

Василий Кашуба
05.04.2016, 07:14
... Может лучше будет применить циклическое подключение с опросом соответствующего входа. Всё равно по техзаданию уже задан цикл в 1 минуту. То есть подключаем 1 выход с задержкой (доли секунды), за это время проверяется есть ли запрос на 1 входе. Если есть - отрабатываем 1мин и переключаем на второй, если нет запроса на 1 входе - сразу переключаем на 2 выход по той же схеме и далее по кругу. На мой взгляд это и реализовать проще и работать будет честнее. ...
Эта задача и реализована в предложенных мной схемах.

rovki
05.04.2016, 07:17
Если производительности компрессора не хватает на всех ,то рано или поздно ,как ни крути ,все зациклится и будет по кругу работать непрерывно ,пока уровень давления не упадет до критического .

Василий Кашуба
05.04.2016, 07:21
Если производительности компрессора не хватает на всех ,то рано или поздно ,как ни крути ,все зациклится и будет по кругу работать непрерывно ,пока уровень давления не упадет до критического .
Это кому ответ?

Mak_dim
05.04.2016, 07:58
День добрый!

maximov2009, спасибо, утром пока ехал на работу в голове нарисовался такой же вариант!
Василий Кашуба, спасибо, но видимо я не понял вашей идеи сразу.

За 20 минут сделал, все работает.
Забил на приоритет по времени, входы сканируются по очереди 1-2-3-1 и если есть другие активные входы происходит переключение через выдержку времени.

По поводу всей установки, - да мне она не особо важна, - важно то, что сделал решение :)
Не будет работать еще раз обратятся )))

Но замечу еще раз, искомый алгоритм на СИ без упрощений забабахать можно за 15 минут с чистого листа.
Мое имхо СИ гораздо удобнее ). Всем ПИС.
90% времени работаю с микроконтроллерами, ПР немного выбиваются из этого мира, но раньше получалось решить задачи на ПР, а сейчас два раза подумаю закладывать такой девайс или нет, если алгоритм слегка хитрый )).


Всем спасибо за участие.

Василий Кашуба
05.04.2016, 20:31
День добрый!

maximov2009, спасибо, утром пока ехал на работу в голове нарисовался такой же вариант!
Василий Кашуба, спасибо, но видимо я не понял вашей идеи сразу.

За 20 минут сделал, все работает.
Забил на приоритет по времени, входы сканируются по очереди 1-2-3-1 и если есть другие активные входы происходит переключение через выдержку времени.

По поводу всей установки, - да мне она не особо важна, - важно то, что сделал решение :)
Не будет работать еще раз обратятся )))

Но замечу еще раз, искомый алгоритм на СИ без упрощений забабахать можно за 15 минут с чистого листа.
Мое имхо СИ гораздо удобнее ). Всем ПИС.
90% времени работаю с микроконтроллерами, ПР немного выбиваются из этого мира, но раньше получалось решить задачи на ПР, а сейчас два раза подумаю закладывать такой девайс или нет, если алгоритм слегка хитрый )).


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

Mak_dim
05.04.2016, 21:04
Василий, схему вашу разберу, обязательно, - на будущее.

Василий Кашуба
05.04.2016, 21:13
Василий, схему вашу разберу, обязательно, - на будущее.
Эта схема может чередовать выхода и по одному и по парно. Для этого переключения третий вход, а второй вход "Пуск/Стоп".

Wladislaw
25.01.2018, 08:18
Хотел сделать переключение 3-х выходов. Почему Д-тригеры работают не корректно? При подаче на вход I1 единицы и строба на I2 все три триггера выдают 1. Это тогда не триггер, а ячейка памяти.

rovki
25.01.2018, 09:27
Хотел сделать переключение 3-х выходов. Почему Д-тригеры работают не корректно? При подаче на вход I1 единицы и строба на I2 все три триггера выдают 1. Это тогда не триггер, а ячейка памяти.

поставьте линии задержки между выходом триггера одного и входом следующего