PDA

Просмотр полной версии : Области применения ПР110(примеры реализации)



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

AI!
23.11.2012, 22:38
я про это и говорю, что осталось только одно это дёргание (отключение насоса на один такт-цикл прибора)
если кроме него ничего нет? - буду думать как его отфильтровать...

rovki
23.11.2012, 22:50
Цикл ротации,а не цикл ПР .Не дерганье (кратковременное) ,а выключение на несколько часов,дней ;) :) .Если об этом ,то да:rolleyes: :)

Andrei Z
23.11.2012, 22:52
а в чём задача? есть три насоса, и три датчика потока, например ЭКМ на замыкание контакта при включении насоса и повышении давлении на выходе.
необходимо
1 при нормальной работе менять насос последовательно при отработке определённого времени\
2 переключать насос если первый вышел в аварию или выключился

а почему макрос даёте в архиве, а не сразу проект (неудобно)

rovki
23.11.2012, 22:54
есть еще вход ,который задает количество ,одновременно работающих насосов ,по парно ,так сказать ротация .

Andrei Z
23.11.2012, 22:58
прикольно.. а если один выключился насос ? как тогда? два будет постоянно молотить пока как то аварию не сбросишь? у САУ на двух насосах, индикатор мигать начинает тот что сигнализирует работу реле если по аварии отключился. а второй насос работает то время пока не сбросишь аварию первого

AI!
23.11.2012, 23:07
Цикл ротации,а не цикл ПР .Не дерганье (кратковременное) ,а выключение на несколько часов,дней ;) :) .Если об этом ,то да:rolleyes: :)мы точно одну и туже версию смотрим?
у меня не получается этого воспроизвести.

PS обновил тут (http://www.owen.ru/forum/showpost.php?p=96695&postcount=2756) и дёргание, о котором я говорю...


а почему макрос даёте в архиве, а не сразу проект (неудобно)архив в 8 раз меньше места занимает, а я, например, на 3G модеме сижу...
а архивированный макрос весит в 20-80 раз меньше, чем неархивированный полноценный проект.

rovki
23.11.2012, 23:08
При ротации 1 из 3 ,при поломки одного насоса ,ротация 1 из 2 ,при поломке 2х насосов ,работает 1 из 1 постоянно .
При ротации 2 из 3 ,при поломке одного насоса ,работает 2 из 3 (исправных) ,при поломке 2х насосов -работает 1.
.
Во всех режимах ,при аварии 3 насосов,не работает не один.
Это общий принцип ротации 3 насосов(по очереди),а индикация ,вкл\выкл ,итд это индивидуально ,кому что нравится.
Есть еще другой принцип ротации насосов (ХВС) -по наработке ,а логика примерно та же.

rovki
23.11.2012, 23:16
мы точно одну и туже версию смотрим?
у меня не получается этого воспроизвести.

PS обновил тут (http://www.owen.ru/forum/showpost.php?p=96695&postcount=2756) и дёргание, о котором я говорю...
Вот это -другое дело ,красота .Особенно красиво в симуляторе -живая картина ,переливается огранка ,очень абстрактная,многогранная ,,,, -очередной шедевр .;) ,
Убрал все явные ОС ,работает так же.

AI!
23.11.2012, 23:27
одна из идей: при смене 1 насос -> 2 насоса и обратно,
ротация происходит автоматически.

т.е. сначала включается новый, а выключается старый насос.

PS правда при одном дохлом этого уже не происходит :(

Василий Кашуба
23.11.2012, 23:34
я про это и говорю, что осталось только одно это дёргание (отключение насоса на один такт-цикл прибора)
если кроме него ничего нет? - буду думать как его отфильтровать...

Анатолий, вы два СЕЛа на один блок сравнения завязали, поэтому не получилось. Задействуйте первый СЕЛ от детектора фронта некст, и всё получится. :) Отличный получился макрос.:) ;) :) Спасибо.

AI!
23.11.2012, 23:40
Анатолий, вы два СЕЛа на один блок сравнения завязали, поэтому не получилось. Задействуйте первый СЕЛ от детектора фронта некст, и всё получится. :) Отличный получился макрос.:) ;) :) Спасибо.нет, там идея в другом.

основная идея - пока происходят изменения не выдавать их на выход.
а как только 2 такта подряд одни и те же данные - считаем что они стабильные.

НО когда режим 1 насос и 2 дохлых, циклу нужно проскочить эти 2 дохлых насоса, вот и получается два цикла подряд нули, которые фильтр "заглатывает" как "стабильные".

пришлось воткнуть доп.фильтр и на ноль на выходе - он включается с опозданием не на 1 такт, а на 2

Василий Кашуба
23.11.2012, 23:48
PS обновил тут (http://www.owen.ru/forum/showpost.php?p=96695&postcount=2756) и дёргание, о котором я говорю...


Этот вариант тяжелее.:rolleyes: :)

AI!
23.11.2012, 23:52
кстати, без "пунктиров", этот фильтр не работал бы. (автоматом система не там где нужно выбирала их)

Хвала изготовителю! (с) Cars

rovki
23.11.2012, 23:53
А вот и баг (дефект шлифовки) в устоявщемся режиме

AI!
24.11.2012, 00:04
Баг- такт ротации вообще не влияет ,ни один ни сто.на фото не моя программа! тут нет ни одного пунктира!!!
как я уже писал
без "пунктиров", этот фильтр не работает.
(автоматом система не там где нужно выбирает "обратные связи")
PS да и как "художник-абстракционист" говорю, что замененные связи не мной нарисованы,
я их скрупулёзнее вырисовываю!!!

rovki
24.11.2012, 00:16
Миль пардон .Игрался (делал копию подлинника ) и забыл несколько штрихов .Тогда все отлично ,пока .

AI!
24.11.2012, 00:22
хотите скажу где основная проблема на картинке?

на выходе обоих DC32 одна и таже цифра, а в моей задумке должны быть разные

при более детальном рассмотрении вижу, что обратная связь образовалась между нижним левым SEL и ADD, там из SEL выходит "2", а в ADD заходит "1", видимо с предыдущего цикла итеррации.

rovki
24.11.2012, 00:29
Полируйте... и на Sotheby.

AI!
24.11.2012, 12:11
Полируйте...немного отполировал - убрал лишние блоки

фильтрация сигнала сначала была на входе, ща на выходе.
остатки этой фильтрации и убрал

а оно опять ошибку выдаёт :(

AI!
24.11.2012, 12:53
Хотел спросить на видео, оно правда тормозит, там где я я пытаюсь покрутить мышкой на элементе AND не происходит сложения, так и должно быть?это в центре, наверху, рядом с NOT?

AND это не ADD, и это не сложения, а наложение маски (фильтра),
что бы к выходу не пропустить попытку включения неработающего насоса

PS заметили, что когда вы "говорите", что с 3им насосом всё "ОК" - он почти сразу включается?...

AI!
24.11.2012, 13:51
Я бы маску сделал бы такэто всё понятно, способов получить из битового сигнала маску битов оч.много.
я выбрал такой как у меня, мне кажется он должен меньше памяти занимать...

capzap
24.11.2012, 14:06
это всё понятно, способов получить из битового сигнала маску битов оч.много.
я выбрал такой как у меня, мне кажется он должен меньше памяти занимать...
я смотрел в статусе изменений по процетнтам, изменений нет в обоих вариантах. Зато у Вас на выходе используются те же константы 1 и 2 , за счет них я выиграю в процентах, мне кажется

AI!
24.11.2012, 14:11
я смотрел в статусе изменений по процетнтам, изменений нет в обоих вариантах. Зато у Вас на выходе используются те же константы 1 и 2 , за счет них я выиграю в процентах, мне кажетсяу вас 4 исполняемых блока, у меня тоже.
но вам ещё надо константы тянуть через весь проект, что ухудшит читаемость схемы.

capzap
24.11.2012, 14:13
меня заверяли, что можно как в CFC обозначит начало и конец а сами линии можно скрыть, чтоб читабельность неухудшилась, я прадва забыл уже как :)

AI!
24.11.2012, 14:37
в OwenLogic ещё есть PutBit, тогда и ToInt применять не надо :p

AI!
24.11.2012, 15:41
Ещё один способ

PS ой, ошибка в одной константе ))

AI!
25.11.2012, 02:50
новая версия ротации 3х насосов, немного оптимизированная,
и меньше подвержена влиянию текущему багу со стеком в овен-лоджике.

Andrei Z
25.11.2012, 10:00
и чего Вы сам макрос выставляете, не удобно, надо сохранить потом вставить (((

AI!
25.11.2012, 10:08
и чего Вы сам макрос выставляете, не удобно, надо сохранить потом вставить (((уже говорил, что
я на 3G модеме сижу...
а макрос весит меньше, чем полноценный проект.

rovki
25.11.2012, 10:10
А если задавать кол-во работаюших насосов в целочисленном формате -
0-не один не включается
1- ротация по одному
2- ротация по два
3-включены все.
то как будет выглядеть макрос?

rovki
25.11.2012, 11:00
Пойду дальше (в размышлениях) .А почему бы ,если делать на целочисленной логике такой автомат ,то задавать на входе макроса код неисправности насосов и код количества насосов ,участвующих в ротации ,а также и код на выходе в целочисленном формате .А все преобразования из BOOL to INT и наоборот ,делать снаружи макроса.Тогда можно реализовать граф для N насосов (<8) .ТО есть получим макрос 3 входа( такт еще) и один выход.Можно даже без входа "такт-цикл" обойтись -сделав "моргание" по входу "неисправность" (на все единицы(255) ,если нет неисправностей или на ноль если есть любая неисправность ,снаружи макроса.Тогда будет вообще 2 входа и 1 выход у макроса.

AI!
25.11.2012, 11:34
А если задавать кол-во работаюших насосов в целочисленном формате -
0-не один не включается
1- ротация по одному
2- ротация по два
3-включены все.
то как будет выглядеть макрос?надо между NOT и AND воткнуть "фильтр"
(выкладываю, точно работает, только забодало меня бороться со стеком...)

PS вот если их сделать не 3, а 32, и ротация по принципу FIFO, и с учётом наработки - вот будет интересно...
(но только когда стек починят)

AI!
25.11.2012, 11:47
А почему бы ,если делать на целочисленной логике такой автомат ,то задавать на входе макроса код неисправности насосов и количество насосов, участвующих в ротации, а также и код на выходе в целочисленном формате. А все преобразования из BOOL to INT и наоборот, делать снаружи макроса.наверно вы правы, макрос в том виде, в котором есть сейчас логичнее смотрелся бы с целочисленными входами-выходами.

rovki
25.11.2012, 11:53
А у меня точно пишет -обращение к пустому стеку.

AI!
25.11.2012, 11:58
я ж говорю - "надоело бороться со стеком"

замените связь между MOD и SEL на обычную, вроде почти правильно работает...

rovki
25.11.2012, 12:03
надо между NOT и AND воткнуть "фильтр"
(выкладываю, точно работает, только забодало меня бороться со стеком...)

PS вот если их сделать не 3, а 32, и ротация по принципу FIFO, и с учётом наработки - вот будет интересно...
(но только когда стек починят)
Уже предлагали делать ротацию по принципу ФИФО ,но я так и не понял ,что складывать в очередь ,ведь если возникла не исправность ,то очередь нужно менять ,а тогда зачем очередь ?Это как в ППЗУ счетчик перебирает адреса ячеек ПЗУ ,а не исправность переключает область адресов .Просто для большого количества входов выход ,нужно большое ПЗУ .:rolleyes:Да и очередь надо делать энергонезависимую ,что для ПР110 не возможно.Поэтому лучше обходится без памяти,чисто комбинационно .

rovki
25.11.2012, 12:04
я ж говорю - "надоело бороться со стеком"

замените связь между MOD и SEL на обычную, вроде почти правильно работает...
уже пробовал ,работает ,только мелькание появляется :rolleyes:

rovki
25.11.2012, 12:24
надо между NOT и AND воткнуть "фильтр"
(выкладываю, точно работает, только забодало меня бороться со стеком...)

PS вот если их сделать не 3, а 32, и ротация по принципу FIFO, и с учётом наработки - вот будет интересно...
(но только когда стек починят)
К стати ,задавая количество насосов в ротации целочисленным числом ,можно на таком макросе делать повысительную станцию ,добавляя во времени количество работающих насосов ,с учетом давления и неисправностей насосов,да еще с ротацией их при каждом включении.
Жаль ,что не владею данным способом составления схем,тут одной схемотехникой не обойтись.Пора заводить новую тему -Большие хитрости ПР от AI

AI!
25.11.2012, 12:37
можно делать повысительную станциюо чём и речь...

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

AI!
25.11.2012, 12:55
Да и очередь надо делать энергонезависимую ,что для ПР110 не возможно.а смысл? если пропало эл-во, то скорее всего оно пропало и у насосов, так что всё равно их включать заново.
т.е. можно новую очередь строить...


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

rovki
25.11.2012, 13:11
а смысл? если пропало эл-во, то скорее всего оно пропало и у насосов, так что всё равно их включать заново.
т.е. можно новую очередь строить...


ну и про наработку - либо пусть UPS ставят, либо считаем, что схема ротации стремиться выравнять наработку насосов,
так что после перезагрузки просто будем считать, что наработка насосов равна.
К сожалению ,насосы ,так не считают :D моторесурс он ограничен .Да и другие насосы не знают ,что один из них ,снят и в ремонте.
Можно решить по другому - если нужно выравнивать моторесурс по наработке ,то используй данный макрос в ПР114 с энергонезависимыми ФБ (счетчик)

rovki
25.11.2012, 13:14
Вопрос в догонку ,как реализовать проще функцию 2 в степени N ?PITBUT?

AI!
25.11.2012, 13:16
N -> DC32 -> 2^N

rovki
25.11.2012, 17:03
Вот вариантик ротации ,чисто на вычислениях (без ОС,почти) ,без учета неисправности ,М-включенных из общего числа N насосов(<8). Осталось вычислить (исключить) неисправные насосы:confused: .

AI!
26.11.2012, 14:45
выкладываю ещё одну версию ротации 3х насосов, ничем не отличается от последней, только ошибку не выдаёт.

rovki
26.11.2012, 20:59
"Задача такая:

Двигатель вращается с частотой 1000 об/мин.
В случае выхода за пределы +-10% необходимо замкнуть выход на непродолжительное время (секунда, например). После чего, двигатель останавливается. В дальнейшем, возможно, проводят осмотр двигателя, а возможно, он автоматически стартует (сейчас не столь важно). И важно, чтобы двигатель опять набрал частоту 1000. После чего опять бы начал осуществляться контроль выхода за пределы.

Возможно ли осуществить такое на ПР?"
Можно ,но точность буден не большая ,т.к. период тактирования внутреннего генератора 2мс(мин).Для повышения точности ,считаем период за 10 оборотов движка .
Вот вариант тахометра такого :rolleyes:

Василий Кашуба
26.11.2012, 22:34
Предлагаю готовый проект на основе макроса от AI! предложения по улучшению пректа принимаются.
http://yadi.sk/d/PWqgSQJy0uvqS

AI!
26.11.2012, 23:21
предложения по улучшению пректа принимаются.1) таймер лучше вынести за пределы макроса, нагляднее
2) а "маскируются" насосы просто установкой их кол-ва в "0"

AI!
26.11.2012, 23:33
[COLOR="Sienna"]"Задача такая:
Двигатель вращается с частотой 1000 об/мин.
...
Возможно ли осуществить такое на ПР?"
Можно ,но точность буден не большая ,т.к. период тактирования внутреннего генератора 2мс(мин).Для повышения точности ,считаем период за 10 оборотов движка.надо к двигателю прикрутить пару шестерёнок, понизив обороты

ну и задачу, надо решать другим способом:
1) по сигналу с двигателя делаем два блока с задержкой на выключение (включения), с верхней и нижней границей допустимых значений, соответственно.
2) если след. сигнал пришел когда XOR выходов от этих блоков = 1 - то всё хорошо, если XOR=0, то плохо.

rovki
26.11.2012, 23:51
надо к двигателю прикрутить пару шестерёнок, понизив обороты

ну и задачу, надо решать другим способом:
1) по сигналу с двигателя делаем два блока с задержкой на выключение (включения), с верхней и нижней границей допустимых значений, соответственно.
2) если след. сигнал пришел когда XOR выходов от этих блоков = 1 - то всё хорошо, если XOR=0, то плохо.

Лучше нарисовать :rolleyes: .Шестеренки не предлагать ;) счетчик =это редуктор

AI!
27.11.2012, 00:17
Тогда вопрос на засыпку - как оборот отмерять будем? (технически)
если цикл программы будет медленнее оборота диска (6мс)

rovki
27.11.2012, 00:24
на валу стоит "Флажок" ,а рядом индуктивный датчик .Указан же диапазон частоты вращения движка -1000об\мин .это 60мс -оборот,а не 6.
Потому и поставил редуктор-счетчик ,что бы мерить период за 10 оборотов ,что бы было точнее.А вы -тон ,тоф.....,да еще столь категорично .

AI!
27.11.2012, 00:45
а ну да, мс = 1/1000c, а я почему то подумал, что 1/100c..

а сколько работает один цикл программы? успеет за 60мс выполниться 2раза?

rovki
27.11.2012, 07:16
Цикл ПР ,для простых задач в пределах 3мс-10мс.

Владимир Евдокимов
27.11.2012, 09:13
Цикл ПР ,для простых задач в пределах 3мс-10мс.

А в сложных до 60мс - проверено, а может быть и больше.:mad:

AI!
27.11.2012, 11:40
А вы -тон ,тоф.....,да еще столь категорично .ещё раз - вы сами считаете милисекунды - а это в корне не правильно!
погрешность может быть в разы!!!
(говорю вам как программист на ассемблере)

вот мой вариант, на TOF-ах

PS основная идея - зачем вручную считать время, когда есть аппаратный таймер?

rovki
27.11.2012, 15:15
Для начала ,как программист сделайте как в задании -сформировать одиночный импульс ,длительностью 1сек ,при уходе частоты за пределы ,а не формируйте последовательность импульсов на выходе .А остальное дело вкуса .Делал и не раз на тонах и тофах частотные фильтры ,сегодня захотел так -на счетчике .
Много раз задавал вопрос разработчикам -как будет вести себя счетчики от блинка ,если время цикла ПР больще ,чем задание-частота генератора (ФБ) ,учитывая ,что таймер отрабатывается по прерываниям .Но в ответ тишина ,а ведь это принципиальная особенность при проектировании схемы ,не описанная ни где.

AI!
27.11.2012, 16:31
Много раз задавал вопрос разработчикам -как будет вести себя счетчики от блинка, если время цикла ПР больще ,чем задание-частота генератора (ФБ), учитывая, что таймер отрабатывается по прерываниям.ИМХО возможны 2 варианта, и оба сделают вашу программу недееспособной.

PS обновил свой вариант.

rovki
27.11.2012, 18:20
ИМХО возможны 2 варианта, и оба сделают вашу программу недееспособной.

PS обновил свой вариант.
Дело в том ,что время отсчитывается аппаратным таймером ,но запуск самого таймера (тон,тоф) идет от счетчика .Если импульсы на входе будут чаще чем сможет обработать ПР в цикле,то такие входные сигналы потеряются ,даже если вы их заведете напрямую на таймер ,без счетчика .Если же период входных импульсов больше чем цикл ПР ,то все равно как реализовать данную задачу.:rolleyes: :cool:
Кроме того для запуска Таймера вы используете Ф триггер ,а он как известно формирует импульс длиной цикла ПР ,тогда в проекте возникает погрешность ,которая будет зависеть от длительности цикла ПР и в разных проектах ,погрешность будет разная ,что то же не гуд .
Вывод- для таких "скоростных" задач (тахометр ,частотомер) нужен 3 вариант ;) :) или Пр114,все же в раз пять быстрей
.

AI!
27.11.2012, 22:49
Кроме того для запуска Таймера вы используете Ф триггер ,а он как известно формирует импульс длиной цикла ПР.не факт, что начало и конец программы будут ближе по времени.

представьте что код программы это Земля, его выполняет ПР - это Солнце в зените
т.е. Солнце двигается (ПР исполняет код) от Японии (входов) до Аляски (выходов)

когда вы мне говорите, что нужно что бы всё выполнилось за один цикл ПР,
вы думаете что блоки расположены как Британские острова и Гренландия.

а я сделал по-другому потому что думал, что блоки во времени исполнения расположены как Япония и Аляска, и что их разделяет только линия перемен дат.
(именно эта граница, на моих последних схемах обозначена пунктиром, т.н. "обратная связь")

PS выкладываю схему, где всё делается за один цикл ПР

rovki
29.11.2012, 17:37
вы сами считаете милисекунды - а это в корне не правильно!

Согласен :rolleyes: ;)Наследие аппаратной реализации -верить написанному(паспортным данным) .В ПР нужно осторожней с генераторами и таймерами -Не ставить уставки меньше чем цикл ПР ,хоть и установите 2мс в генераторе ,а генерить будет с периодом в 2 раза больше чем цикл ПР ,который заранее неизвестен для данного проекта .-вот такая особенность программной реализации ,которую нужно большими буквами прописать во всех инструкциях ,а не считать ,очевидным

rovki
29.11.2012, 19:00
Добрый день! Прошу Вас дать подсказку начинающиму любителю логики )
Помощи в написании скрипта!
Задача следующая:
Имеется ёмкость, датчик верхнего уровня, и клапан
Когда житкость достигает верхнего уровня клапан закрывается и открывается через 10 сек.


ps. на двух датчиках данную задачу реализавал.
С уважением
Вот один из многих вариантов реализации

AI!
02.12.2012, 01:04
PS вот если их сделать не 3, а 32, и ротация по принципу FIFO, и с учётом наработки - вот будет интересно...
(но только когда стек починят)обратные связи починили...
(хотя они тут и не нужны оказались... но всё же вставил одну, для надёжности....)

сделал не 32 насоса, а 8, т.к. у ПР ща только 8 выходов.
(до 32 можно легко нарастить, нужно только желание :rolleyes: )

понял, что FIFO тут бесполезно, надо включать насос с наименьшей наработкой из "отдыхающих",
а выключать с наибольшим моторесурсом из работающих.
(моторесурс считается с точностью до сек., до 2^31 сек, или 68 лет)

первый вход задаёт маску разрешенных насосов
(у тех насосов что в ремонте, или если их реально меньше - надо просто сбросить соответствующие биты)
второй вход "Next" - команда ПЕРЕключиться на следующий насос
(выключить с наибольшим моторесурсом и включить с наименьшим)
ну а третий - сколько насосов нужно в данный момент
(например по датчику давления можно менять кол-во насосов в зависимости от кол-ва потребителей)

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

----------- update ----------
обновил немного:
- в борьбе с "подмигиванием", обратная связь стала важна.
- если при подаче сигнала "Next" работающие насосы имеют минимальный моторесурс, из разрешенных, то ничего не происходит.
(зачем менять относительно новый насос на более изношенный?)

rovki
02.12.2012, 10:20
Здравсвуйте. На форуме мне не создать тему, если можно разместитеп ожалуйста, может сможете перслать кто сможет помочь

Регулирование рН
Помогите подобрать реле с таймером

Задача такая. Процесс химический в реакторе. Идет закисление
рН-метр имеет релейный выход(еслть еще аналоговый 4-20), может подавать 220 вольт на пускатель насоса
При достижении определенного значения, например 5.0., будет дана команда включить реле (пускатель с катушкой 220 вольт) для запуска насоса (насос подкачивает щелочь и значение рН увеличивается)
Реле рН-метра будет включено до того момента пока pH не будет равен 6
.однако есть вероятность что насос подкачает слишком много щелочи и значение рН в аппарате будет больше заданной.
Нужно включать насос к примеру только на три секунды.
Т.е. между выходом рН-метра и пускателем насоса нужно установить таймер с релеюшкой
Когда на него первый раз подается напряжение, к примеру 220 вольт., дается команда включить пускатель на 3 минуты и после его отключить,
Рн в реакторе будет сам устанавливаться в течение некоторого времени.
Если рН все еще меньше 6, то через 15 минут таймер пропустит сигнал на пускатель опять на 3 секунды, и так до тех пор, пока на таймер подается напряжение от рН-метра. какое взять реле с таймером?

Вот вариант управления реактором закисления .Есть возможность со входов выбирать уставки генератора (при наладке) .

rovki
02.12.2012, 11:40
обратные связи починили...
(хотя они тут и не нужны оказались... но всё же вставил одну, для надёжности....)

сделал не 32 насоса, а 8, т.к. у ПР ща только 8 выходов.
(до 32 можно легко нарастить, нужно только желание :rolleyes: )

понял, что FIFO тут бесполезно, надо включать насос с наименьшей наработкой из "отдыхающих",
а выключать с наибольшим моторесурсом из работающих.
(моторесурс считается с точностью до сек., до 2^31 сек, или 68 лет)

первый вход задаёт маску разрешенных насосов
(у тех насосов что в ремонте, или если их реально меньше - надо просто сбросить соответствующие биты)
второй вход "Next" - команда ПЕРЕключиться на следующий насос
(выключить с наибольшим моторесурсом и включить с наименьшим)
ну а третий - сколько насосов нужно в данный момент
(например по датчику давления можно менять кол-во насосов в зависимости от кол-ва потребителей)

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

----------- update ----------
обновил немного:
- в борьбе с "подмигиванием", обратная связь стала важна.
- если при подаче сигнала "Next" работающие насосы имеют минимальный моторесурс, из разрешенных, то ничего не происходит.
(зачем менять относительно новый насос на более изношенный?)

Сумматоры времени лучше сделать на счетчиках ,тогда если использовать ПР114 ,будет возможность сохранять наработку ,при отключении питания .
При работе насосов в группе (например ,3из 8),в нее включаются насосы с минимальной наработкой или по другому ?;)
на счет 32 насосов -это вы хватанули .Ни переменных ,ни стека не хватит ,да и такого количества насосов мало кому нужно,ИМХО

AI!
02.12.2012, 11:44
Сумматоры времени лучше сделать на счетчиках ,тогда если использовать ПР114 ,будет возможность сохранять наработку ,при отключении питания.
При работе насосов в группе (например ,3из 8),в нее включаются насосы с минимальной наработкой или по другому ?;)
на счет 32 насосов -это вы хватанули .Ни переменных ,ни стека не хватит ,да и такого количества насосов мало кому нужно,ИМХО
1) думаю сделать не счётчики, а переменные - у них тоже есть настройка "энергонезависимость"
2) ну да, а что, что-то не так?

rovki
02.12.2012, 11:57
1) думаю сделать не счётчики, а переменные - у них тоже есть настройка "энергонезависимость"
2) ну да, а что, что-то не так?
у вас уже переменных 67% ,а ФБ только 9% ;)
Кроме того в счетчике есть сброс ,а у вас нет .А он должен быть ,что бы наработка сбрасывалась при включении нового насоса в работу ,на место старого .:rolleyes: :p
сделайте лучше 4 насоса ,но добавьте целочисленные выходы для контроля времени наработки насосов (для сетевых переменных)
ну и при смене маски ,тот бит что стал 1 из нуля (включился) должен сбросить наработку соответствующего насоса.

AI!
02.12.2012, 12:03
у вас уже переменных 67% ,а ФБ только 9% ;)
Кроме того в счетчике есть сброс ,а у вас нет .А он должен быть ,что бы наработка сбрасывалась при включении нового насоса в работу ,на место старого .:rolleyes: :p
1) от того что я неявные переменные сделаю явными - их кол-во в программе не изменится. (ИМХО)
2) думал как красивее сделать сброс, при включении насоса - не придумал.
(есть идеи, как это должно выглядеть в реальном устр-ве?)

PS на картинке с 2мя макросами что за устр-во?

rovki
02.12.2012, 12:07
1) от того что я неявные переменные сделаю явными - их кол-во в программе не изменится. (ИМХО)
2) думал как красивее сделать сброс, при включении насоса - не придумал.
(есть идеи, как это должно выглядеть в реальном устр-ве?)

куда уж красивее -использовать вход R у счетчика:D и анализировать маску ,на предмет установки бита.

AI!
02.12.2012, 12:10
куда уж красивее -использовать вход R у счетчика:D и анализировать маску ,на предмет установки бита.вы не поняли.
вопрос в том, как это будет выглядеть у конечного устр-ва? для пользователя?
ну и при смене маски ,тот бит что стал 1 из нуля (включился) должен сбросить наработку соответствующего насоса.не факт, вдруг это тот же самый насос, но после регулярного проф-тех-осмотра?

rovki
02.12.2012, 12:17
ВЫ про насос что ли ,как будет выглядеть новый или старый после ремонта .Сломался насос ,меняем бит в маске на 0 ,сохраняем наработку ,до момента установки нового насоса (в маске делаем бит в 1) ,сбрасываем значение старой наработки .Но нужна индикация времени наработки всех насосов (пусть на другом уровне ) ,для анализа.

rovki
02.12.2012, 12:27
вдруг это тот же самый насос, но после регулярного проф-тех-осмотра?
Тогда тетя или дядя должны записать время наработки насоса в журнал ,сбросить старую наработку и считать новую ;) и поставить его на любое свободное место .Это еще раз подтверждает ,что считать время наработки ,без его контроля(индикации) не имеет смысла,тогда просто ротация по очереди .Например ,мне нужно сделать профилактику насосу через 1000часов его работы,как я узнаю какой насос уже проработал это время??

rovki
02.12.2012, 18:05
Вот вариант управления реактором закисления .Есть возможность со входов выбирать уставки генератора (при наладке) .
Тут важно знать тех процесс ,его временные параметры ,что важно -точность PH или скорость процесса .Можно взять ПР114 ,поставить ПИД регулятор с ШИМ,а на вход -аналоговое значение с датчика :rolleyes:

AI!
02.12.2012, 21:00
Это еще раз подтверждает ,что считать время наработки ,без его контроля(индикации) не имеет смыслав корне не согласен.
если считать насосы равноправными, а не как у вас в схеме с ППЗУ (основной, вспомогательный, резервный)

то их моторесурс достаточно быстро выровняется сам по себе.
(просто насос который имеет меньший моторесурс будет чаще включаться)

PS единственное, что кроме времени работы у насоса наверняка есть повышенный износ на "старт-стоп".

rovki
02.12.2012, 21:26
в корне не согласен.
если считать насосы равноправными, а не как у вас в схеме с ППЗУ (основной, вспомогательный, резервный)

то их моторесурс достаточно быстро выровняется сам по себе.
(просто насос который имеет меньший моторесурс будет чаще включаться)

PS единственное, что кроме времени работы у насоса наверняка есть повышенный износ на "старт-стоп".
Не с тем проектом сравниваете ,там подсчета времени наработки нет .А вот тут есть http://www.owen.ru/forum/showpost.php?p=91477&postcount=2112 и тут все насосы равноценные .Если это циркуляционные насосы отопления ,то там достаточно по очереди переключать насосы ,потому как они работают непрерывно ,а если это система подачи воды ,то тут могут быть разные времена наработки при ротации "по очереди" .Именно для таких случаев и ведется учет наработки фактического времени насосов и тут без знания значения этих времен не обойтись ,:rolleyes:
И еще моторесурс и время наработки это не одно и то же.:cool:Даже если вы осушествляете ротацию насосов по времени (например 24 часа) ,то в пределах этого времени насосы будут работать разное количество времени (выходные,праздники ,аварии...) .если осуществлять ротацию не по времени ,а по датчику давления (при каждом срабатывании переключать на следующий насос) ,то то же не получим равную наработку,потому и сделал макрос ротации по времени ,но с учетом наработки насоса .
Другое дело как осуществлять ротацию насосов ,когда 1 из 3 ,например новый .Тогда будет все время работать новый ,пока не догонит старые и вот тут должны сказать свое мнение СПЕЦИАЛИСТЫ в области КХ ,я к сожалению таковым не являюсь и если что делаю ,то интуитивно ,исходя из здравого смысла .Тем более мы с вами делаем не коммерческие проекты ,мы показываем возможности ПР (и свои) ,разные способы управления группой насосов ...А кто то вообще поставит ПЧВ и многие проблемы решатся сами .

AI!
02.12.2012, 21:56
не до конца понимаю вашу терминологию, да и вы, похоже, мою тоже не совсем понимаете...
посему оставлю макрос "как есть", до появления реального тех.задания.
(ну разве что, возможно, пооптимизирую шоб ресурсов меньше кушало)

PS заменил "счётчик" на соответствующий ФБ - кол-во переменных не уменьшилось, только увеличился % ФБ в три раза :)
(с 5% до 15%)

rovki
03.12.2012, 18:44
заменил "счётчик" на соответствующий ФБ - кол-во переменных не уменьшилось, только увеличился % ФБ в три раза :)
(с 5% до 15%)
Так ,главное что не возросло количество переменных при реализации сброса .;) :) и энергонезависимости с 67 до 90%.

AI!
03.12.2012, 20:41
Так ,главное что не возросло количество переменных при реализации сброса .;) :) и энергонезависимости с 67 до 90%.это не факт, т.к. соответствующие соединения я не устанавливал.

PS если у простых блоков типа ADD/AND, один вход оставить пустым - это тоже уменьшает кол-во переменных.

rovki
03.12.2012, 21:34
это не факт, т.к. соответствующие соединения я не устанавливал.

PS если у простых блоков типа ADD/AND, один вход оставить пустым - это тоже уменьшает кол-во переменных.

А вот если бы установили ,то это был бы факт ;) :) А зачем тогда вообще брать двухвходовку ,если один вход не использовать :confused: :rolleyes:
Вы спрашивали про изделие с 2 вашими макросами -это я просто показал ,что даже при 16 насосах (2 макроса) уже переменные более 100% ,а говорили про 32 .А реально ,работающих насосов на 1 общею трубу более 4 штук ,я и не слышал ,потому и писал ,что в макросе достаточно сделать ротацию 4 насосов и добавить на свободные выходы вывод времени наработки.:)Спрос был бы больше на такой макрос,ну естественно с возможностью сброса наработки любого насоса ,можно даже сделать по целочисленному входу- набрал номер отличный от нуля 1-4 и такой насос(наработка) сбросится.

AI!
03.12.2012, 22:42
А вот если бы установили ,то это был бы факт ;) :) А зачем тогда вообще брать двухвходовку ,если один вход не использовать :confused: :rolleyes:
Вы спрашивали про изделие с 2 вашими макросами -это я просто показал ,что даже при 16 насосах (2 макроса) уже переменные более 100% ,а говорили про 32 .А реально ,работающих насосов на 1 общею трубу более 4 штук ,я и не слышал ,потому и писал ,что в макросе достаточно сделать ротацию 4 насосов и добавить на свободные выходы вывод времени наработки.:)Спрос был бы больше на такой макрос,ну естественно с возможностью сброса наработки любого насоса ,можно даже сделать по целочисленному входу- набрал номер отличный от нуля 1-4 и такой насос(наработка) сбросится.1)пооптимизировал, тут немного схему, поглдявая на счётчик кол-ва переменных - оттуда и инфа.
т.е. пока второй конец "висел в воздухе" - % переменных был меньше.
1a) кстати, понял что 2х входовый элемент SUB/ADD занимает меньше ресурсов (% переменных) чем SEL (даже с "висячим" концом)
посему в новой схеме вместо выбора между 7FFFh и 8000h с помощью SEL, решил получать один из другого сложением/вычитанием единицы.

2) про изделие с 2мя макросами я понял - это был ПР110.
я изначально выбирал ПР114, и поэтому этой проблемы не видел.

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

rovki
03.12.2012, 22:49
3) управлять можно не только насосами, а например эл.конвекторами в большом зале,
или освещением в оперном театре (ща модно ставить энеросберегайки, а они не любят переменные резисторы)
или дома, особенно если оно на диодах...
Электроника и электрика меньше подвержена износу,чем механика ,потому там учитывать наработку ,как то не принято ,ИМХО.Бывает лампочка годами светит ,а бывает новая за неделю сгорает:rolleyes: .Там и очередь пойдет;)

Василий Кашуба
04.12.2012, 20:51
...посему оставлю макрос "как есть", до появления реального тех.задания.


Добрый вечер, помогите написать макрос ПИД регулятора для ПР114.
желательно два варианта (один для релейных выходов, второй для аналогового выхода).
Заранее спасибо.

rovki
04.12.2012, 21:18
А чем этот ПИД не устраивает ?http://www.owen.ru/forum/showpost.php?p=85293&postcount=68 от разработчиков

Василий Кашуба
06.12.2012, 09:52
А чем этот ПИД не устраивает ?http://www.owen.ru/forum/showpost.php?p=85293&postcount=68 от разработчиков

Хороший макрос, но нужен дополнительный макрос для релейного управления сервоприводом.:) ;)

rovki
06.12.2012, 18:14
так вроде есть макрос Гистерезис ,если его поставить на выход ПИД ,то может получится то что надо .Или опишите как надо.

Василий Кашуба
06.12.2012, 19:02
так вроде есть макрос Гистерезис ,если его поставить на выход ПИД ,то может получится то что надо .Или опишите как надо.

Нужен ШИМ модулятор. :rolleyes: :)

rovki
06.12.2012, 19:10
Так Шим есть в ПР114 ,если заказать соответствующий дискретный выход ,то в свойствах задаете.А если заказали не тот ПР114(модификацию) ,то поставьте шим на выход ПИда ,По моему делал такой макрос ,если нет ,то сделаем .

Василий Кашуба
06.12.2012, 19:15
Так Шим есть в ПР114 ,если заказать соответствующий дискретный выход ,то в свойствах задаете.А если заказали не тот ПР114(модификацию) ,то поставьте шим на выход ПИда ,По моему делал такой макрос ,если нет ,то сделаем .

Сейчас посмотрю.:)

rovki
06.12.2012, 19:32
Вот макрос ШИМ для вещественных чисел (0-1,0) Продублирую макрос в областях применения ПР114

Василий Кашуба
07.12.2012, 07:18
Вот макрос ШИМ для вещественных чисел (0-1,0) Продублирую макрос в областях применения ПР114

Одно уточнение, ШИМ должен управлять двумя разными реле, одно реле открывает исполнительный механизм, второе - закрывает.:rolleyes: ;) :)

rovki
07.12.2012, 07:26
А скважность то какая на двух выходах ,одинаковая?Или на одном ,например ,90% ,а на другом 10%?

Василий Кашуба
07.12.2012, 08:44
А скважность то какая на двух выходах ,одинаковая?Или на одном ,например ,90% ,а на другом 10%?

Скважность зависит от величины рассогласования и одинаковая для каждого реле. Единственное "НО", Рассогласование со знаком "+" управляем одним реле, а со знаком "-" -другим.

Andrei Z
07.12.2012, 09:57
Проще говоря исполнительный механизм имеет два входа, подаём на один закрываем заслонку, подаём на другой открываем.

Василий Кашуба
07.12.2012, 10:57
Проще говоря исполнительный механизм имеет два входа, подаём на один закрываем заслонку, подаём на другой открываем.

Совершенно верно.:)

rovki
07.12.2012, 16:09
Скважность зависит от величины рассогласования и одинаковая для каждого реле. Единственное "НО", Рассогласование со знаком "+" управляем одним реле, а со знаком "-" -другим.
Вот ваш ШИМ+ :)
П,С. Поменял выходы +,- (внутри макроса)

Василий Кашуба
07.12.2012, 20:09
Вот ваш ШИМ+ :)
Спасибо.
Блок управления сервоприводами уже сделал, а за FSEL отдельное спасибо. :)

rovki
07.12.2012, 20:19
А как можно приспособить ПИД (Пр114) ,для регулировки температуры ТЭНа ,если есть ТРМ с двухзонным регулированием .То есть ТРМ -измерение ,индикация ,а ПР114 с ПИДом +ТТР для регулировки Т.?Скоро предстоит делать .Естественно выход ТРМ на вход ПР.И какой ТТР лучше выбрать -с аналоговым управлением или использовать ШИМ .Нагрузка инерционная -5-10мин (10квт) прогрев от 20 до 120 гр.Два канала(независимых).

Andrei Z
07.12.2012, 20:23
А как можно приспособить ПИД (Пр114) ,для регулировки температуры ТЭНа ,если есть ТРМ с двухзонным регулированием .То есть ТРМ -измерение ,индикация ,а ПР114 с ПИДом +ТТР для регулировки Т.?Скоро предстоит делать .Естественно выход ТРМ на вход ПР

а есть в Этом смысл? может тогда сразу ТРМ10 взять?

Василий Кашуба
07.12.2012, 20:47
А как можно приспособить ПИД (Пр114) ,для регулировки температуры ТЭНа ,если есть ТРМ с двухзонным регулированием .То есть ТРМ -измерение ,индикация ,а ПР114 с ПИДом +ТТР для регулировки Т.?Скоро предстоит делать .Естественно выход ТРМ на вход ПР.И какой ТТР лучше выбрать -с аналоговым управлением или использовать ШИМ .Нагрузка инерционная -5-10мин (10квт) прогрев от 20 до 120 гр.Два канала(независимых).

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

rovki
07.12.2012, 20:55
У меня стоял 2ТРМ0 -двухканальный (1700р) ,а ТРМ 10 ,нужно 2шт по 3тыс.
Был бы 2 канальный .Но подумаю еще, может ТРМ212 +Буст или на прямую ТТР ,соответствующий.Точность большая не нужна (1%) ,нужен надежный вариант .

rovki
08.12.2012, 23:04
Если нужна высокая точность поддержания температуры, а нагрузка инерционная, то лучше использовать аналоговое управление тиристорным или симисторным ключом.
Если есть автономная система управления нагревом ,то действительно мало смысла ставить ПР114 ,проще и дешевле ТРМ .А если система нагрева входит в состав технологического оборудования ,где нужно менять уставки ,отслеживать промежуточные значения ,менять динамику процесса автоматически, еще мало ли что ,то тут без ПР114 не обойтись ( и макроса ПИД) .Но если еще нужно наблюдать за температурой ,то одного ПР мало ,нужна еще панель (Ип320,как минимум) .Вот я и подумал о варианте -в качестве измерителя ,индикатора дешевый ТРМ с 2 позиционным регулированием (1,2 канальный) и ПР110 +ПИД,а на выходе ШИМ .
От сюда вопрос -можно ли из сигнала с ТРМ (биполярного) ,работающий с 2х зонном регулированием, и сделав целочисленный ПИД регулятор ,который через ШИМ управляет нагревом ,сделать аналог ТРМ с ПиД регулятором .ПРи этом ПР110 выполняет еще несколько задач ,связанных и не связанных с нагревом.:confused:
То есть нужно создать ПИД регулятор(целочисленный) ,входная информация (сигнал) которого будет временной интервал между срабатыванием выходного реле ТРМ и время включения и выключения или это не возможно ,в смысле теории ТАУ.?:rolleyes:
Можно ли теоретически превратить ТРМ1 в ТРМ10? c помощью ПР110

Василий Кашуба
09.12.2012, 12:45
Можно ли теоретически превратить ТРМ1 в ТРМ10? c помощью ПР110

Если бы ПР110 мог быть мастером, то тогда можно было бы.
Получились одни бы. :D :)

rovki
09.12.2012, 13:40
Не ,сеть тут не причем ,я ж говорил о реализации ПИд на ПР110 .То есть ПИД(ШИМ)=ТРМ1+ПР110.

Василий Кашуба
09.12.2012, 15:08
Не ,сеть тут не причем ,я ж говорил о реализации ПИд на ПР110 .То есть ПИД(ШИМ)=ТРМ1+ПР110.

А как вы на булевы входа передадите температуру? :)

Andrei Z
09.12.2012, 15:12
Здесь только один вариант, делать гистерезис по краям уставки очень маленький (получается зона нечувствительности или бездействия) тоесть если уставка температуры 60 то при 59.5 замыкает один контакт ТРМ а при 60.5 замыкает другой. Это сигналы на ПР 110, далее ПР отрабатывает по времени ... хотя он не видет насколько сигнал рассогласования большой чтобы быстрее отработать на изменение.... Пока это мысли, делюсь

rovki
09.12.2012, 15:15
Так я же писал -датчик температуры подключается к ТРМ1 -индикация и 2 зонное регулирование ,с выхода ТРМ1 (реле) сигнал идет на ПР110 ,который анализирует сигнал с реле ТРМ и делает ПИД регулирование (ПИ) и выдает на выход ,как сигнал ШИМ .Может в чистом виде ПИД и не получится ,не знаю ,забыл теорию ТАУ,ТАР ...,может просто П или ПИ регулирование -цель, учитывая инерционность обьека , анализируя сигнал с ТРМ1 ,сделать процесс регулирования более точным .

rovki
09.12.2012, 15:19
Здесь только один вариант, делать гистерезис по краям уставки очень маленький (получается зона нечувствительности или бездействия) тоесть если уставка температуры 60 то при 59.5 замыкает один контакт ТРМ а при 60.5 замыкает другой. Это сигналы на ПР 110, далее ПР отрабатывает по времени ... хотя он не видет насколько сигнал рассогласования большой чтобы быстрее отработать на изменение.... Пока это мысли, делюсь
да , дельту надо сделать минимальную .Анализируя время включенного состояния и выключенного ,а так же возможно и частоту переключения .
Скорее всего надо делать алгоритм адаптивный ,который за несколько циклов вкл\выкл подберет нужные коэффициенты (автонастройка)
С перерегулированием на первоначальном этапе прогрева можно смирится (как и при 2х-зонном регулировании ) ,а вот дальнейшее поддержание температуры надо сделать более точным ,да же при медленно меняющихся внешних факторах.Может просто сделать Интегральное звено ,что бы мощьность на выходе ШИМ была не 0% и 100% как при 2зонном регулировании ,а менялась плавно ,по экспоненте , как то так или сделать ПИ звено ?Жаль ,что теорию утратил ,в ней дело ,а не в реализации.

Andrei Z
09.12.2012, 16:00
я вообще теорию незнал, я так понимаю по своим действующим регуляторам допотопным РС29.
Например давление отслеживаем. Если давление резко упало, то регулятор отрабатывает сразу безспрерывным сигналом открытия регулировочного клапана подпитки. В нашем случае ПР будет очень инерционным, он начёт отсчитывать время сигнала открытия и так как оно постояяно после начнёт импульсами открывать подкачку. Причём когда утечка резко закрывается, и давление ещё маленькое но изменения резко идёт вверх, РС29 недожидаясь даже пока давление до уставки дойдёт уже начинает прикрывать клапан подпитки. Боюсь ПР очень неполноценный будет если сигнал дискретный с ТРМ будет

Василий Кашуба
09.12.2012, 17:23
да , дельту надо сделать минимальную .Анализируя время включенного состояния и выключенного ,а так же возможно и частоту переключения .
Скорее всего надо делать алгоритм адаптивный ,который за несколько циклов вкл\выкл подберет нужные коэффициенты (автонастройка)
С перерегулированием на первоначальном этапе прогрева можно смирится (как и при 2х-зонном регулировании )...

Предлагаю взять 2-х канальный ТРМ, 1-й канал настроить на минимальную дельту, в зоне этой дельты мощность = 0, а 2-й канал настроить дельту так, чтобы она захватывала зону с мощностью = 50%, и когда оба канала вышли за пределы своих зон, мощность = 100%. Переходы из одной зоны в другую можно сделать не ступенчато, а по экспоненте.

Andrei Z
09.12.2012, 18:12
Вот это вариант, и если время выход за уставку между один каналом и вторым учитывать например маленькое, то действие регулятора будет быстрое и постояяное например на открытие задвижки.

rovki
09.12.2012, 20:43
Предлагаю взять 2-х канальный ТРМ, 1-й канал настроить на минимальную дельту, в зоне этой дельты мощность = 0, а 2-й канал настроить дельту так, чтобы она захватывала зону с мощностью = 50%, и когда оба канала вышли за пределы своих зон, мощность = 100%. Переходы из одной зоны в другую можно сделать не ступенчато, а по экспоненте.
А теперь надо придумать ,как одним каналом ТРМ обойтись :rolleyes:и какой тип логики ТРМ выбрать

AI!
11.12.2012, 15:37
сортировка методом пузырька.

rovki
11.12.2012, 17:22
надо бы ,что бы сортировка происходила при изменении значения на любом входе и что бы на выходе переписывались окончательные значения ,а не промежуточные значения сортировки .Вещь очень интересная ,куда бы применить ?:confused:
Про такой метод и не слышал:eek: :)

AI!
11.12.2012, 17:25
Про такой метод и не слышал:eek: :)в программировании это первое что делают, после надписи "Hello, World!"
надо бы ,что бы сортировка происходила при изменении значения на любом выходе и что бы на выходе переписывались окончательные значения ,а не промежуточные значения сортировки.если сделать всё что Вы просите - переменные у ПР кончатся...

rovki
11.12.2012, 17:28
Ну я ж не программист .И надписи такие не видел

Владимир Евдокимов
11.12.2012, 18:25
Метод "пузырька" очень популярен в примерах при изучении ассемблера, который сейчас вряд ли кто изучает. И все же куда применить?

rovki
11.12.2012, 18:27
если сделать всё что Вы просите - переменные у ПР кончатся...
Не кончатся ,точно :rolleyes: ;) :),да же у ПР110

rovki
11.12.2012, 18:29
Метод "пузырька" очень популярен в примерах при изучении ассемблера, который сейчас вряд ли кто изучает. И все же куда применить?
да ,нашел ,не знал или забыл за 30 лет ;) :D http://ru.wikipedia.org/wiki/%D1%EE%F0%F2%E8%F0%EE%E2%EA%E0_%EF%F3%E7%FB%F0%FC% EA%EE%EC

rovki
11.12.2012, 20:26
Не кончатся ,точно :rolleyes: ;) :),да же у ПР110
Вот ,примерно ,так :p :)

AI!
11.12.2012, 21:29
Вот ,примерно ,так :p :)у вас получилось 5n блоков SEL, 4*(n/2) блоков GT и EQ
и задержка в 16 тактов при выдаче ответа (зачем так много?)
---------------------
а если цикл "развернуть", то понадобиться менее n^2 блоков SEL, и менее (n^2)/2 блоков GT, и ответ СРАЗУ!
(т.е. при n<5 делать цикл с проверками не имеет смысла)

PS ещё одна проба пера с пузырьком...
на этот раз один вход это выбор способа сортировки - по возрастанию или по убыванию...

rovki
11.12.2012, 21:33
у вас получилось 5n блоков SEL, 4*(n/2) блоков GT и EQ
и задержка в 16 тактов при выдаче ответа (зачем так много?)
---------------------

Ну так автор сомневался- влезет \не влезет .А такты не считал ,как то было не к спеху :D ;)
Лучше внутри макроса организовать задержку,что бы значения на выходе не прыгали ,чем потом каждый будет бороться с этим сам .Полуфабрикат хорошо ,а готовый к использованию макрос -лучше.

AI!
11.12.2012, 21:38
Ну так автор сомневался- влезет \не влезет.ради прикола - замените все "обратные" связи в моей первой схеме на "обычные", и посмотрите на стек :D
поэтому и подумал, что не хватит...

PS работоспособность, правда, пострадает, но мы же на стек только хотим поглядеть :rolleyes:

PPS я не буду делать "развёрнутую" версию, т.к. её надо делать под конкретную задачу, т.е. знать n (кол-во входов/выходов)

Василий Кашуба
11.12.2012, 21:44
сортировка методом пузырька.

Анатолий, в вашем макросе если на восьмом входе ноль, то сортировка не запустится.

Василий Кашуба
11.12.2012, 21:51
у вас получилось 5n блоков SEL, 4*(n/2) блоков GT и EQ
и задержка в 16 тактов при выдаче ответа (зачем так много?)
---------------------
а если цикл "развернуть", то понадобиться менее n^2 блоков SEL, и менее (n^2)/2 блоков GT, и ответ СРАЗУ!
(т.е. при n<5 делать цикл с проверками не имеет смысла)

PS ещё одна проба пера с пузырьком...
на этот раз один вход это выбор способа сортировки - по возрастанию или по убыванию...

А в новом макросе соответственно на входе 7

AI!
11.12.2012, 21:54
Анатолий, в вашем макросе если на восьмом входе ноль, то сортировка не запустится.запустится, вы просто сделайте там импульс (временно смените значение),
т.к. детект изменений идёт именно по этому входу.

PS макрос(ы) "пузырёк" - это макрос, "для души", что бы использовать его в реальном проекте требует доработки.
(я посчитал, что делать все проверки, что бы использовать его в конечном продукте - слишком накладно)
-------------
если есть нужда в готовом макросе для реальной задачи - говорите своё n, и я сделаю.

AI!
11.12.2012, 22:03
Не кончатся ,точно :rolleyes: ;) :),да же у ПР110у вас переменных 78%
а если в проекте понадобилась сортировка, то скорее всего проект не из простых, и оставшихся 22% скорее всего не хватит.
ИМХО

rovki
11.12.2012, 22:10
Да в чем наклад,то ?лишние элементы -эка невидаль .Тем более они не лишние для требуемого функционала .
На счет разрядности -делайте на 4 разряда ,если кому нужно больше ,он соединит выходы 1 макроса и подаст на 2макрос ,для сортировки(поиска максимума или минимума) . .Только нужно ,что бы это были законченные макросы сортировки,без дребезга по выходу и с изменением по любому входу.Чем лучше 8 вход первого?

rovki
11.12.2012, 22:11
у вас переменных 78%
а если в проекте понадобилась сортировка, то скорее всего проект не из простых, и оставшихся 22% скорее всего не хватит.
ИМХО
Зато ФБ мало .:D
Да ,при соединении 2 макросов (последовательно ) появляется баг -не задана ссылка на обьект

AI!
11.12.2012, 22:33
Да ,при соединении 2 макросов (последовательно ) появляется баг -не задана ссылка на обьектэто не ко мне :rolleyes:
На счет разрядности -делайте на 4 разряда ,если кому нужно больше ,он соединит выходы 1 макроса и подаст на 2макрос ,для сортировки(поиска максимума или минимума) . .Только нужно ,что бы это были законченные макросы сортировки,без дребезга по выходу и с изменением по любому входу.Пожалуйста.
PS правде не совсем пузырёк, но оч. похоже ))

Василий Кашуба
11.12.2012, 22:52
это не ко мне :rolleyes: Пожалуйста.
PS правде не совсем пузырёк, но оч. похоже ))

Предлагаю ваш, но отредактированный "Пузырёк".

rovki
11.12.2012, 22:59
Да уж ,на первый пузырек мало похож .
Вот пример использования макроса(пузырек) для поиска максимального числа из 10чисел .

AI!
11.12.2012, 22:59
Предлагаю ваш, но отредактированный "Пузырёк".странная схема анализа входа..
(оч. дырявая)

rovki
11.12.2012, 23:04
Предлагаю ваш, но отредактированный "Пузырёк".
А проектик ,кто зажилил :D

AI!
11.12.2012, 23:04
Да уж ,на первый пузырек мало похож .
Вот пример использования макроса(пузырек) для поиска максимального числа из 10чисел .думаю надо "пузырёк4" переименовать в MAXMIN.
(думаю чаще его в этом качестве использовать будут)

PS я уже делал поиск максимума и минимума в макросе "Ротация 8 насосов"

rovki
11.12.2012, 23:07
А я вроде делал уже макрос- минимум\максимум .там 2 выхода всего.

AI!
11.12.2012, 23:08
а этот "с эффектом сортировки" :p

rovki
11.12.2012, 23:10
так если один выход(максимум) то сортировка не нужна:D и быстрее -за 1 цикл .:p :p :p :p

Василий Кашуба
11.12.2012, 23:11
Да уж ,на первый пузырек мало похож .
Вот пример использования макроса(пузырек) для поиска максимального числа из 10чисел .

Так соединять макросы нельзя, а если в третьем макросе будут числа меньше, чем в других макросах, хотя они и не самые большие в своих макросах. :cool:

AI!
11.12.2012, 23:15
так если один выход(максимум) то сортировка не нужна:D и быстрее -за 1 цикл .:p :p :p :pособенность ОвенЛоджик в том, что ту часть схемы которая не подключена, программа не будет генерировать для неё код.
т.е. как будто её и нет

т.е. мой макрос можно использовать как MAX, MIN, одновременно MAXMIN или сортировку, и ОвенЛоджик сгенерирует код только из нужных блоков

PS максимальная эффективность будет если использовать все 4 входа.
(отсутствие лишних блоков в конечной схеме)

PPS про один цикл не понял. у меня в MAXMIN так же.

rovki
11.12.2012, 23:16
Так соединять макросы нельзя, а если в третьем макросе будут числа меньше, чем в других макросах, хотя они и не самые большие в своих макросах. :cool:Можно ,для поиска максимума ,проверьте .

AI!
11.12.2012, 23:21
Так соединять макросы нельзя, а если в третьем макросе будут числа меньше, чем в других макросах, хотя они и не самые большие в своих макросах. :cool:отчего же?
задача просто найти максимум, а не сортировать все данные.

Василий Кашуба
11.12.2012, 23:22
Можно ,для поиска максимума ,проверьте .

Разве что, только максимум найти.:)

rovki
11.12.2012, 23:23
PPS про один цикл не понял. у меня в MAXMIN так же.

значит это не метод пузырька ,если за 1 цикл:rolleyes: ,ИМХО

rovki
11.12.2012, 23:24
Разве что, только максимум найти.:)
Так я так и написал ,минимум ,нужно другой макрос,которого нет

AI!
11.12.2012, 23:34
значит это не метод пузырька ,если за 1 цикл:rolleyes: ,ИМХОесть такое понятие как "развёрнутый цикл", или "развернуть цикл"
это когда один и тот же код копируется несколько раз, уменьшая кол-во итераций цикла, или вообще избавляясь от него

когда N=4 цикл с пузырьком должен выполниться 3 раза.
что я и сделал - просто 3 раза подрят проверил соседние значения и поменял их, если они в "неправильном" порядке.

т.е. 3 итерации цикла выполняются за 1 цикл ПР

AI!
11.12.2012, 23:36
Так я так и написал ,минимум ,нужно другой макрос,которого нетпочему нет? минимум это первый выход MAXMINa (пузырька4),
ну и как вы уже заметили - максимум 4ый.

rovki
11.12.2012, 23:42
почему нет? минимум это первый выход MAXMINa (пузырька4),
ну и как вы уже заметили - максимум 4ый.
Потому нет ,что если чисел не 4,а 3:rolleyes: ,то нужно брать со второго выхода .А максимум всегда 4 выход ,не зависимо от количества каналов
;)-максимум всегда на дне ,а минимум на верху .причем уровень дна один и тот же ,а уровень верха(мин) разный.

AI!
11.12.2012, 23:46
что-то я забыл, что в ПР110 нет отрицательных чисел...

rovki
11.12.2012, 23:56
А разве тип INT имеет отрицательные числа ,хоть в ПР110,хоть в ПР114

rovki
12.12.2012, 00:01
т.е. 3 итерации цикла выполняются за 1 цикл ПР
Значит это уже не итерации ,как не назови ...:rolleyes: ;) Значит метод пузырька выродился ...

AI!
12.12.2012, 00:20
А разве тип INT имеет отрицательные числа ,хоть в ПР110,хоть в ПР114в ПР114 есть вещественные, а они имеют знак
(написав "110", это я так сократил всех возможных вариантов)
Значит это уже не итерации ,как не назови ...:rolleyes: ;) Значит метод пузырька выродился ...про пузырька соглашусь (потому что я ещё одну проверку для оптимизации воткнул, и от циклы перестали быть одинаковыми)

PS попробуйте отсортировать пузырьком массив данных, где N=2
и от того что цикл будет выполняться 1 раз алгоритм от этого не изменился!!!
-----------
а про итерации не соглашусь... взгляните на пой корень квадратный.
там тупо скопирован несколько раз огромный кусок "кода".
т.е. над данными выполняются одни и те же операции несколько раз.

rovki
12.12.2012, 07:31
А я бы вспомнил макрос синуса ,где последовательно вычисляются члены ряда ,а потом складываются .Вот если бы в проекте использовалась 1 формула вычисления члена ряда и приходилось бы менять только числа в этой формуле ,в зависимости от N многочлена и при этом использовалась переменная ,которая накапливала бы сумму ряда от каждого цикла,то это было бы итерационное вычисление .А так просто последовательное вычисление ,ИМхо

AI!
12.12.2012, 16:56
Баловался с оптимизацией, получился полноценный макрос.

(в "правильном пузырьке" должно быть 5+4+3+2+1=15 операций сравнения, а у меня получилось уложиться в 13)

rovki
12.12.2012, 17:37
Баловался с оптимизацией, получился полноценный макрос.

(в "правильном пузырьке" должно быть 5+4+3+2+1=15 операций сравнения, а у меня получилось уложиться в 13)
КРАСЯВО!!! действительно -полноценный макрос :) осталось задачу придумать под него:D ;) ;)
ну и после появления опции макрос в макросе ,ждем сортировки вещественных чисел

rovki
12.12.2012, 18:25
А вот и макрос- приставка к макросу сортировки ,для поиска максимального ,среднего и минимального числа из массива .

rovki
13.12.2012, 19:03
А если массив формировать по одному каналу и сохранять в макросе стека ,по подав на макрос сортировки ,получим анализ переменной в разные моменты времени ,значения которой были сохранены в стеке .

AI!
13.12.2012, 20:32
стек на новый лад.

rovki
13.12.2012, 20:38
стек на новый лад.
Вот что значит явные обратные связи ,супер программные штучки ;) :)
Наконец ,то и до меня дошло ,как можно использовать явные обратные связи .Вот наконец-то ,спустя 2 года заработал регистр сдвига на D- триггерах ,как в железе .
Спасибо ,AI ,целочисленный Вы наш.:D

AI!
13.12.2012, 21:52
стек с реверсом

rovki
13.12.2012, 22:19
добавил сброс(очистку) очереди FIFO.

AI!
13.12.2012, 23:04
я как-то спорил с вами про 2х тактный стек...
так вот - новый стек уж точно однотактный! :D

rovki
13.12.2012, 23:20
Когда не было явных обратных связей ,сделать 1 тактный стек (ячейку) было сделать не возможно ,потому и ставился р и ф триггеры .

AI!
14.12.2012, 00:20
стекосортировка

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

Владимир Евдокимов
15.12.2012, 17:53
Специально для rovki и AI: нужен генератор случайных чисел 6-разрядный с контролем перебора всех комбинаций

capzap
15.12.2012, 18:02
Специально для rovki и AI: нужен генератор случайных чисел 6-разрядный с контролем перебора всех комбинаций

модель простая, непосредственно сам генератор, его можно "слизать" в ОСКАТ и массив булевых ячеек из максимального значения генерируемого числа, инициированный ФАЛЬШ, а при выпадении генератором переводить в ТРУЕ. Минус будет тормозить когда большинство ячеек будет заполнено. А сложную модель по моему вообще не реально построить на таком маленьком устройстве

AI!
15.12.2012, 18:03
6 каких разрядов? 10тичных, 2ных?

Владимир Евдокимов
15.12.2012, 18:06
6 каких разрядов? 10тичных, 2ных?
6 2-ных разрядов

AI!
15.12.2012, 18:10
т.е. от 0 до 63?

а то что при каждом запуске будет одинаковая последовательности - ничего?

Владимир Евдокимов
15.12.2012, 18:15
какая же случайность, если заранее известен порядок? для меня главное анализ всех комбинаций

AI!
15.12.2012, 18:19
тогда вопрос на засыпку - где взять первое случайное число?

Владимир Евдокимов
15.12.2012, 18:26
взять из текущего времени

AI!
15.12.2012, 18:32
вы не умничайте - вы пальцем покажите (на ФБ)

Andrei Z
15.12.2012, 18:34
А ещё интересно, для чего Вам это?

Владимир Евдокимов
15.12.2012, 18:37
ПР-ка с этим проектом послужит для отладки пр-ммы в более сложном проекте

Andrei Z
15.12.2012, 18:40
ПР-ка с этим проектом послужит для отладки пр-ммы в более сложном проекте

так может лучше в екселе?

Владимир Евдокимов
15.12.2012, 18:47
на входы контроллера нужно подавать различные комбинации (варианты ситуаций при работе), Ексел не пойдет !

rovki
15.12.2012, 18:50
тогда вопрос на засыпку - где взять первое случайное число?
тОЛЬКО по нажатию кнопки(пуск) ,стробонуть ген.случайных чисел .:rolleyes:

Andrei Z
15.12.2012, 18:50
Интересный алгоритм, если из шести ключей могут быть разные состояния. Мне кажется Вам просто нужен последовательный перебор от 000000 до 111111, чтоб попробовать все варианты, и изменение делать нажатием кнопки на вход ПР Кнопка без фиксации

Владимир Евдокимов
15.12.2012, 18:51
вы не умничайте - вы пальцем покажите (на ФБ)

Прошу прощения, забыл, что ОЛ это невозможно.

Владимир Евдокимов
15.12.2012, 18:55
Интересный алгоритм, если из шести ключей могут быть разные состояния. Мне кажется Вам просто нужен последовательный перебор от 000000 до 111111, чтоб попробовать все варианты, и изменение делать нажатием кнопки на вход ПР Кнопка без фиксации

Если было бы так просто, не просил бы помощи:mad:

rovki
15.12.2012, 19:01
Может такой пойдет генератор на базе макроса от AI.

Владимир Евдокимов
15.12.2012, 19:05
Может такой пойдет генератор на базе макроса от AI.

Может и пойдет, анализ ГЛАВНОЕ !!!

capzap
15.12.2012, 19:06
взять из текущего времени

http://ru.wikipedia.org/wiki/MD5 создает не похожие цифровые отпечатки без использования времени

rovki
15.12.2012, 19:10
Есть еще вариант -берете фирменный ГСЧ (программа) ,генерите 63 случайных числа от 0 до 63 (с нормальным распределением) и запиваете их на бумаге ,а потом переписываете в макрос ППЗУ из которого потом последовательно выбираете случайные числа .
http://www.randstuff.ru/number/
http://cave.infospace.ru/randgen/

rovki
15.12.2012, 19:11
Может и пойдет, анализ ГЛАВНОЕ !!!
Анализ чего? всели числа прошли ,нет ли повторений????Или вероятностные характеристики

AI!
15.12.2012, 19:12
переписываете в макрос ППЗУ из которого потом последовательно выбираете случайные числа .тоже об этом подумал.

Владимир Евдокимов
15.12.2012, 19:17
Мне нужно, что бы отлаживаемая пр-мма крутилась несколько дней и с ПР-ки приходили гарантированно все комбинации ГСЧ

AI!
15.12.2012, 19:20
самое простое псевдослучайное число с идеальным распределением - взять числа от 0 до 63, и записать биты в обратном порядке.

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

AI!
15.12.2012, 20:06
буду ещё данные?

Владимир Евдокимов
15.12.2012, 20:09
буду ещё данные?

??? ???? ???

rovki
15.12.2012, 20:17
Какова частота смены числа нужна ?Или сделать ее тоже случайной

Владимир Евдокимов
15.12.2012, 20:24
Случайная, но чаще 1-5 минут ( был бы вход, а частоту можно задать)

AI!
15.12.2012, 20:27
могу сделать,
1) на входе случайное число 0-63 (т.к. я так и не понял где и как вы его будете брать)
2) на выходе "проверенное", по битовой маске, т.е. если то что на входе "занято", то выдаст ближайшее следующее "свободное"...
(если все заняты - маска сбрасывается)
надо?

Владимир Евдокимов
15.12.2012, 20:43
Может такой пойдет генератор на базе макроса от AI.

Генератор работает постоянно, смена числа - какой то случайный цикл, анализ всех комбинаций ( были все 64 числа) - выходной сигнал

rovki
15.12.2012, 21:13
Вот вам генератор случайных чисел от 0-63 ,с гарантией ,что нет повторения и что все числа перебраны ,а также со случайной сменой времени выдачи числа (1-6мин)
Ваша задача забить сами случайные числа в макросы ППЗУ .Остальное сделает схема .Причем каждый новый цикл генерации начинается со случайного числа,то есть начальный адрес ппзу в каждом следующем цикле будет разным.

AI!
16.12.2012, 02:32
мой вариант генератора, с проверкой по битовой маске.

capzap
16.12.2012, 07:30
мой вариант генератора, с проверкой по битовой маске.

У меня сейчас не на чем посмотреть, можно в кратце изложить суть. Просто я соглашусь на маску если код унитарный, но как быть если сперва выпадет число 13 то эта маска должна поглатить и число 5

rovki
16.12.2012, 08:45
мой вариант генератора, с проверкой по битовой маске.
Хороший макрос ,а вот и по битный анализ за 4096(64х64) цикла генерации:rolleyes:макс .разница в количестве включений около 15% (младший -старший разряд)

AI!
16.12.2012, 11:29
но как быть если сперва выпадет число 13 то эта маска должна поглатить и число 5вы слишком часто и слишком сильно меняете ТЗ

да и формулировка, зачастую, крайне непонятная

Andrei Z
16.12.2012, 11:33
Всё равно не пойму, почему именно надо случайные и все варианты, и нельзя просто автоматически по порядку перебрать все варианты))))

Andrei Z
16.12.2012, 12:18
я это понимаю, нужно разобрать все ситуации, только перебор всех ситуаций последовательно приведёт к такому же анализу, вот про что я говорю, зачем в разброс со случайным выбором

rovki
16.12.2012, 12:32
Так и в случае с ГСЧ ,такая последовательность(1,3,2) может случится через 100лет ,а проверка ,как я понял производится автором задания -сутки :D ;) .

rovki
16.12.2012, 12:58
Тогда 1000лет потребуется (6 из 63):D ,в смысле не просто комбинация ,а определенная последовательность из 6 чисел.:rolleyes: ;)
Уже час крутится ,осталось еще 10000000часов:D .

rovki
16.12.2012, 13:08
Не просто откроются окна ,а в той последовательности ,которую вы указали .

capzap
16.12.2012, 14:06
вы слишком часто и слишком сильно меняете ТЗ

да и формулировка, зачастую, крайне непонятная

Постараюсь сформулировать не задание, а видение вопроса, как бы я сделал:
Первое это ГСЧ, тут просто взял бы у когото.
Второе контроль повторов, поставил бы дешифратор вход:шесть разрядов, выход 64-разрядный унитарный код, сравнил бы с маской, если не равна то выход дешифратора через OR с маской и присвоил бы маске. Так же, не равенство сигнализировало бы о появлении нового случайного числа.
В третьих чтоб была менее заметна пауза когда большинство цифр уже заполнено, сделал чтоб генератор молотил с максимальной частотой, а на выход новое число выдавалось через таймер. Это как минимальное время цикла в плк, если программа выполнилась за более короткое время то ждем пока закончится цикл, если время превышено то ждем завершения программы и переходим на следующий цикл

Andrei Z
16.12.2012, 15:12
Тогда 1000лет потребуется (6 из 63):D ,в смысле не просто комбинация ,а определенная последовательность из 6 чисел.:rolleyes: ;)
Уже час крутится ,осталось еще 10000000часов:D .

Вот вспомнил Ваш кросворд МУДРОСТЬ из восьми букв, когда говорил что 40 лет надо перебрать все варианты)))))) причём букв то восемь, только если цифры ьрать то они в одном регистре из 8, десять раз меняються а буквы 33)))) что в милионы дабавляет комбинаций :)

AI!
16.12.2012, 20:44
Постараюсь сформулировать не задание, а видение вопроса, как бы я сделал:
Первое это ГСЧ, тут просто взял бы у когото.
Второе контроль повторов, поставил бы дешифратор вход:шесть разрядов, выход 64-разрядный унитарный код, сравнил бы с маской, если не равна то выход дешифратора через OR с маской и присвоил бы маске. Так же, не равенство сигнализировало бы о появлении нового случайного числа.
В третьих чтоб была менее заметна пауза когда большинство цифр уже заполнено, сделал чтоб генератор молотил с максимальной частотой, а на выход новое число выдавалось через таймер. Это как минимальное время цикла в плк, если программа выполнилась за более короткое время то ждем пока закончится цикл, если время превышено то ждем завершения программы и переходим на следующий циклждём-с, когда "бы" исчезнет ;)

rovki
16.12.2012, 21:10
А вот и анализ макроса rnd64 -вот список чисел которые макрос генерит (первые 64),запоминаются в стеке.Еще бы сделать данный макрос ,аналогичный первому ,в котором есть вход задания макс. числа ,которое выдается на выход.Вот тогда бы это был бы шедевр (без повторений)

capzap
16.12.2012, 21:16
ждём-с, когда "бы" исчезнет ;)

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

rovki
16.12.2012, 21:21
Специально для вас потраха макроса;) :)

capzap
16.12.2012, 21:37
:) как обычно, выглядит удручающе из-за отсутствия убрать группы компонентов с помощью макрос_в_макросе, да и такую схему тестить надо, что куда и т.д. и т.п.

rovki
16.12.2012, 21:56
частично уже протестировал ,смотрите выше принтскрипы.

AI!
16.12.2012, 22:06
есть и второй вариант.
делает тоже самое, но немного по-другому.
и ещё немного недоделан...

capzap
16.12.2012, 22:29
:) будь он проклят этот прогресс, раньше бы сел, да на коленке в тетради нарисовал бы проект, аннет жду когда лоджик будет мне рукой, я сейчас подумал что в своем варианте столкнусь с проблемой запихать 64 разряда в одно целочисленное.
Без дробления это можно как то сравнивать и сохранять, а то с делением на составные части увеличится количество блоков

AI!
16.12.2012, 22:32
ну да, то что 64 разряда не влазят в 32х битную переменную - основная проблема схемы.

на 32 бита я сделал быстро, а вот 64 - пришлось попыхтеть... (и даже возникло желание сделать второй вариант)

AI!
16.12.2012, 23:04
второй вариант, кажись, готов

он оказался более прожорлив к стеку....

rovki
16.12.2012, 23:11
Кажется первый лучше ,потому как есть повторения;) :) .

AI!
16.12.2012, 23:14
а вы точно на второй цикл не "заскочили"?
т.к. после сброса счётчика, он запросто может выдать то же случайное число, что и только что...

PS я и 31 вижу второй раз есть...

rovki
16.12.2012, 23:28
У меня счетчик стоит на 64 ,который запускается при старте проекта и останавливает генератор ,через триггер.Я другие повторения не смотрел ,как увидел первое ,так и сообщил.

AI!
16.12.2012, 23:36
нашел глюк, исправил. (скачайте снова)
и выложите снова такую же картинку... обновлённую...
(интересно сравнить вывод обоих версий)

rovki
16.12.2012, 23:42
Вот ,вроде нормально.А как с входом целочисленным в макросе ,хоть теоретически возможно?

AI!
16.12.2012, 23:48
интересно, что только 54ое число отличается в 2х алгоритмах анализа битовой маски.
а первые 53 абсолютно одинаковые (если я не пропустил)

Вот ,вроде нормально.А как с входом целочисленным в макросе ,хоть теоретически возможно?а зачем?
разве что если от 1 до 32, ещё можно подумать - далее сложность растёт слишком быстро.

rovki
17.12.2012, 00:12
а если мне нужно формировать слчауные числа до 24 или 36 или 49...
Вот вам за это стек на 128 чисел ,анализируйте ,что выдал ваш макрос(сложностей не боюсь).

AI!
17.12.2012, 00:18
анализируйте ,что выдал ваш макрос(сложностей не боюсь).в принципе красиво, интересно что скажет "заказчик".
куда-то он подевался.

PS вот сделают макрос в макросе, можно будет попытаться...
сначала сделать анализатор маски в 32 бита, а потом их состыковать...
(хоть 32 макроса, только стека ПР110 не хватит...)

rovki
17.12.2012, 00:30
А кто сказал ,что все макросы для ПР110 .Каждому кораблю -свое море.Ваш макрос я то же анализировал на Пр114 .

Владимир Евдокимов
17.12.2012, 10:31
[QUOTE=AI!;98528]в принципе красиво, интересно что скажет "заказчик".
куда-то он подевался.

Я на месте, занимаюсь оптимизацией пр-ммы, которую планирую проверять.
Краем глаза наблюдаю за вашим творчеством. Думаю, что у вас все получится. Проект ГСЧ понадобится только через 2 дня и если все как я задумал + ваш превосходный ГСЧ, то работу закончу к Новому году( экономия 2 недели)

Andrei Z
17.12.2012, 11:55
Могарыч с Вас)))) в виде фоток законченого продукта))

AI!
19.12.2012, 01:37
прибрался в первом варианте, убрал пару лишних блоков...

(можно сказать, что прибирался у себя в голове, и готовлюсь сделать rnd с любым числом, как просил rovki)

Владимир Евдокимов
19.12.2012, 15:49
прибрался в первом варианте, убрал пару лишних блоков...

Завтра надеюсь приступить к проверке ГСЧ, успеть бы до конца света :p :) :D
Заранее благодарю!

goldhit
19.12.2012, 15:57
Здравствуйте. Не смогли бы вы мне помоч с одной простой задачей. Мне необходимо на ПР110 реализовать контроль за уровнем воды в баке. В емкости стоят датчики верхнего и нижнего уровня. если вода опускается ниже ДВУ насос не включается пока жидкость не опустится ниже ДНУ, после включения насоса он не отключится пока вода не достигнет ДНУ.
логика работы мне понятна вот только как это реализовать на логических элементах не соображу. Заранее спасибу)

AI!
19.12.2012, 16:35
логика работы мне понятна вот только как это реализовать на логических элементах не соображу. Заранее спасибу)такая схема (http://www.owen.ru/forum/showthread.php?p=55715#post55715) подойдёт?

goldhit
19.12.2012, 16:43
Большое спасибо. как я сам не додумался. переклинило мен что то)

Andrei Z
19.12.2012, 16:45
Опередили меня, признатся у меня каша в голове, сейчас искал даже как блок вставить И. Ищу уже как в Кодесисе элемент в строке.
Но тоже уже тригер сделал с инверсией.
У меня вопрос, а если имеется дэаратор с кондуметрическими датчиками (стержень нержавейка) возможно дискретный вход сразу подключить на замкнутую цепь? или всётаки надо первичный прибор уровня надо?

rovki
19.12.2012, 17:30
Опередили меня, признатся у меня каша в голове, сейчас искал даже как блок вставить И. Ищу уже как в Кодесисе элемент в строке.
Но тоже уже тригер сделал с инверсией.
У меня вопрос, а если имеется дэаратор с кондуметрическими датчиками (стержень нержавейка) возможно дискретный вход сразу подключить на замкнутую цепь? или всётаки надо первичный прибор уровня надо?
Можно ,если это обычная вода и ПР на 24 в.

Владимир Евдокимов
19.12.2012, 17:35
Можно ,если это обычная вода и ПР на 24 в.

Для уменьшения гистерезиса, датчик лучше питать импульсами (можно с выхода этого же ПР)

rovki
19.12.2012, 17:38
Дело не в гистерезисе ,а в не равномерном износе электродов (электролиз)

Владимир Евдокимов
19.12.2012, 17:46
Дело не в гистерезисе ,а в не равномерном износе электродов (электролиз)

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

Andrei Z
19.12.2012, 17:49
Понятно, а если Прна 220 вольт, то возможно через блок питания на 24 В? Судя описанию, питание входов всёравно извне.
Вода системы отопления, не совсем простая, в плане того что соли жёсткости убраны до 300 мк.экв/л (проводимость поменьше чем простая у нас 8000 мк.экв/л) Поплавковый контакт не знаю пойдёт или нет, потому как вакуум внутри. Вот и спросил за стержень нержавейку.

Владимир Евдокимов
19.12.2012, 17:55
Понятно, а если Прна 220 вольт, то возможно через блок питания на 24 В? Судя описанию, питание входов всёравно извне.
Вода системы отопления, не совсем простая, в плане того что соли жёсткости убраны до 300 мк.экв/л (проводимость поменьше чем простая у нас 8000 мк.экв/л) Поплавковый контакт не знаю пойдёт или нет, потому как вакуум внутри. Вот и спросил за стержень нержавейку.

Теоретически можно и пр на 220, но не серьезно питать электрод 220 из соображений электробезопасности и наводок

Andrei Z
19.12.2012, 18:00
да нет же, я имел ввиду, что дискретные входы типа сухой контакт подключается всёравно с внешним питанием, а если ПР на 220 а питание дискретного входа через сухой контакт и блок питания 24 вольта? неа?

Владимир Евдокимов
19.12.2012, 18:05
да нет же, я имел ввиду, что дискретные входы типа сухой контакт подключается всёравно с внешним питанием, а если ПР на 220 а питание дискретного входа через сухой контакт и блок питания 24 вольта? неа?

Питание входов ПР на 220 д.б. 220, смотри докум на ПР(уровни вх сигналов)
24 не пойдет

rovki
19.12.2012, 18:07
Опытным путем было установлено, что импульсное питание, уменьшает гистерезис на порядок. В экспер-те была дист. вода с проводимостью 1мкс/см, для "грязной" воды это может и лишнее.
Хоть убейте не пойму от куда у воды нелинейность .Есть порог чувствительности у ПР ,это да ,но как импульсное питание повысит чувствительность ПР не пойму .Понятно ,что если кончик электрода только коснулся воды ,то наверное сопротивление будет чуть больше ,чем когда электроды полностью утоплены.Может об этом гистерезисе речь ?Но почему это эффект меняется при импульсном питании-не пойму физику процесса. :confused: :rolleyes:

rovki
19.12.2012, 18:09
да нет же, я имел ввиду, что дискретные входы типа сухой контакт подключается всёравно с внешним питанием, а если ПР на 220 а питание дискретного входа через сухой контакт и блок питания 24 вольта? неа?
Или используйте ПР114 ,у него питание 220 ,а входа 24в:rolleyes: ;)

Владимир Евдокимов
19.12.2012, 18:13
Хоть убейте не пойму от куда у воды нелинейность .Есть порог чувствительности у ПР ,это да ,но как импульсное питание повысит чувствительность ПР не пойму .Понятно ,что если кончик электрода только коснулся воды ,то наверное сопротивление будет чуть больше ,чем когда электроды полностью утоплены.Может об этом гистерезисе речь ?Но почему это эффект меняется при импульсном питании-не пойму физику процесса. :confused: :rolleyes:

Речь идет об уровнях 0 и 1, перехода с 0 в 1 и 1 в 0 разные уровни

rovki
19.12.2012, 18:21
У самого ПР они практически одинаковые .Просто сопротивление дисц.воды большое .Сам переход из 0 в 1 и наоборот больше наверное связан с электродами ,как писал выше (площадью контакта),чем с нелинейностью входного оптрона у ПР.
Самое простое ,взять образец воды и в стакане проверить ,чем гадать -хватит,не хватит чувствительности ПР.Для почвы я пробовал ,работает как датчик влажности .На дисц.воде не пробовал

Владимир Евдокимов
19.12.2012, 18:27
У самого ПР они практически одинаковые .Просто сопротивление дисц.воды большое .Сам переход из 0 в 1 и наоборот больше наверное связан с электродами ,как писал выше (площадью контакта),чем с нелинейностью входного оптрона у ПР.
Самое простое ,взять образец воды и в стакане проверить ,чем гадать -хватит,не хватит чувствительности ПР.Для почвы я пробовал ,работает как датчик влажности .На дисц.воде не пробовал

В эксп-те я тоже не использовал саму воду, а аналог т.е. входное напряжение. Подключите и посмотрите уровни перехода (переключения) 0 в 1, а затем 1 в 0 и вы поймете о чем я говорю.

rovki
19.12.2012, 18:44
так вы наверное о динамике процесса ,а не статике .Я имею ввиду входную цепь ПР резисторы ,емкость ,диод .Скорее всего это разное время заряда и разряда входной емкости .Если менять уровень медленно ,то тогда этого гистерезиса не будет заметно .Просто в схемах связанные с датчиком уровня использую ФБ TON или TOF,для фильтрации быстрых помех .

Владимир Евдокимов
19.12.2012, 18:52
Не входная емк.(резулт эксп-та) Скорее всего, а уровень (нелинейности) переключения опто входа .

Andrei Z
19.12.2012, 18:59
Теперь вижу, впринципе уровень сигнала на входе соответсвующего логической единице написано 9 вольт, получается если входное сопротивление ПР равно сопротивлению системе (вода-электрод) То должно всё работать, ТON надо ставить, и при появлении сигнала и на его пропажу, чтобы временные сплески воды убрать. Хоть оборудование и так работает на гистирезисе двух электродов. Тока Пр на 24 вольта надо, 220 так пускать на электроды опасно.
Вообще и 24 низя, надо 12 вольт)))))

Владимир Евдокимов
19.12.2012, 19:08
Теперь вижу, впринципе уровень сигнала на входе соответсвующего логической единице написано 9 вольт, получается если входное сопротивление ПР равно сопротивлению системе (вода-электрод) То должно всё работать, ТON надо ставить, и при появлении сигнала и на его пропажу, чтобы временные сплески воды убрать. Хоть оборудование и так работает на гистирезисе двух электродов. Тока Пр на 24 вольта надо, 220 так пускать на электроды опасно.
Вообще и 24 низя, надо 12 вольт)))))

9 в если уровень будет подниматься с 0в до 9 - переключение в 1, снижение с 9в переключение в 0- произоидет в районе 2-3 в( под рукой точных данных нет т.к. сижу дома)