Макрос ячейки памяти числа с плавающей запятой и стек-очередь на базе его .
Вид для печати
Макрос ячейки памяти числа с плавающей запятой и стек-очередь на базе его .
Проба пера, макрос SIN ус ,с использованием функций с плавающей запятой с использованием рядов .Угол задается в градусах от 0 до 360.
Во ,AI подошел ,сейчас упростит синус ,мастак по математике :) .
тссс.....
я тут инкогнито :D
-------------
PS программеры обычно считают косинус с помощью итераций, через формулу половинного угла...
Схема макроса усредняющего частотомера (с цифровой фильтрацией по методу скользящего окна),на вход I -подаются импульсы, по входу Т задается время периода счета .на выходе значение частоты (с плавающей запятой) ,если Т=1000мс ,то частота в герцах.
дело в том, что упрощение с точки зрения процессора не всегда упрощение с точки зрения человека...
но по "просьбам телезрителей" решил попробовать сделать.
причём этот вариант должен легко переделываться в вариант без вещественной арифметики...
т.е. если его смоделировать как "фиксированная точка" на ПР только с целочисленной арифметикой.
---------------------
т.к. вариант сильно экспериментальный (или "проба пера")
то имеет много ограничений и особенностей
1) угол задаётся двоично с помощью соответствующих входов ПР
(удобно быстро менять аргументы для тестирования)
2) угол в условных единицах от 0 до PI соответственно от 0 до 81 условной единицы.
3) на выходе сразу и sin (сверху) и cos (снизу)
-------------
если кому надо будет полностью готовый вариант - обращайтесь, допилю...
а для тренировки мозгов мне и такого варианта пока хватает))
------------
PS есть идея дальнейшего развития алгоритма
1) уе сделать 0..2пи -> 0..81
(можно конечно всё привести к виду 0..1/4пи, но не факт что разбор "полётов" с углами будет проще простого добавления ещё одного аргумента)
2) ну или вообще вещественным сделать, напр. 0..1
а промежуточные значения получать линейной интерполяцией...
Ну батенька ,упростили называется :) .Двоичный код на входе и это от любителя целочисленной арифметики ,не ожидал :( .да и угол маловат ,у меня 0-360 градусов.confused: ;)
всё ж зависит от задачи...
есть отдельная тема в программировании "быстрое вычисление синуса", так тут задача в первую очередь использовать команды которые быстро считают.
а есть которые красиво выглядят :)
про "двоичный код"
1) я сначала думал использовать степени 2ки для вычисления и по этому решил ввод для теста сделать таким...
потом остановился на степенях тройки :)
и по уму надо было всё в макрос переписать, где аргумент вводится одним нажатием, но, как вы знаете, текущая версия не удобна для редактирования макросов...
2) угол меняется в "2 счёта" изменением констант...
PS я предполагал что вы не оцените "фарш с тестом", но до состояния готовых пирожков я решил не доводить...
(мож пока)
вот ещё вариант, синус и косинус (без синуса и косинуса :p )
с приростом (убыванием) на заданный угол.
угол задаётся с помощью констант sin(pi/2/N)*65536 и cos(pi/2/N)*65536
где N - кол-во шагов от 0 до pi/2
в примере N=90, т.е. шаг равен 1ому градусу.
у макроса 2 входа:
1) направление, т.е. прирост или убывние угла
2) импульс этого самого прироста/убывания..
и 2 выхода - sin и cos текущего угла умноженного на 65535
(для наглядности сделал и вещественный вид результата sin и cos в основной программе)
PS всё с использованием исключительно целочисленной арифметики!
уточню, макрос интересен когда нужно не точное значение конкретного угла, а именно изменение аргумента "по синусоиде".
Еще корешок квадратный нужен
Макрос Сумматора и макрос устройства сравнения .
Сумматор прибавляет к сохраненному значению уставку ,есть вход сброса.
Устройство сравнения анализирует входное значение по трем уставкам .Уставка на больше,на меньше и равно .Есть три выхода -больше ,равно ,меньше.Два макроса имеют переменные с плавающей запятой.
Правда наблюдается некорректная работа симулятора ,уж не знаю почему.То есть макрос FMEL отдельно работает ,а вот вместе с макросом FSUM выход равенство не работает.
Уважаемые господа!
Прошу помощи в составлении программы для реле ПР110.220.8ДФ.4Р.Ч, сам долго буду ковыряться. Одна известная зарубежная фирма
просит за свой контроллер больше 15р. отечественных, но нехочется буржуям платить, тем паче когда есть отличная замена отечественных
фирм. Я на 2 листочках составил то что мне бы хотелось, правда не совсем уверен что все правильно. Программы которые уже разработаны
смотрел они не подходят.
Насосная станция состоит из двух насосов, двух реле давления (2 диапазона давлений), реле превышения давления, реле сухого
хода. Алгоритм работы:
При полностью пустой напорной линии включается один насос затем с 1сек. задержкой включается второй насос. По достижении среднего
давления (реле нижнего уровня Р2 перешло в 0) один насос выключается, работает один насос. По достижении верхнего давления (реле
верхнего уровня Р1 перешло в 0) выключается оставшийся насос. При падении с верхнего уровня до среднего включается один насос и по
достижении верхнего выключается. Если давление падает ниже среднего уровня включается второй насос (оба работают). При
периодической работе насосов с верхнего уровня до среднего насосы включаются по одному, но по переменке. Так же предусмотрены две
кнопки без фиксации норм. откр. SB1 и SB2 для включения соответствующего насоса и имеющие высший приоритет по включению насосов.
При срабатывании реле предельного давления Р3 оба насоса выключаются и светиться сигнальная лампа выхода Q2. При срабатывании
реле сухого хода Р4 светиться сигнальная лампа выхода Q1. При неправильных показаниях реле давления Р1=0 и Р2=1 мигает сигнальная
лампа выхода Q2 2-3 раза в сек. Ну вроде и все.
Что ж вы на ночь глядя ;) ,да еще накануне понедельника .Придется ждать :)
Прошу прощения, что вечером накануне понедельника! Но, время у меня еще есть, поэтому свои дела не отодвигайте))). Если что не понятно спрашивайте. С таким трудом меня идентифицируют на форуме свихнуться можно.
Что за кнопки дополнительного выключения -их назначение.Или это кнопки стоп в ручном режиме ?У реле давления давления есть зона -давление включения насоса и давление выключения насоса(гистерезис) .У двух реле эти зоны одинаковы или нет?
Дополнительный выключатель насоса- это дополнительный боковой контакт подключаемый к автоматическому выключателю, для того чтобы при выключении насоса контроллер знал об этом. Нет не одинаковы. У каждого реле разный диапазон он обозначен фигурной скобкой. Это для того чтобы определять примерно какое давление на данный момент. Зоны всего две, но за счет перекрытия в средней части есть возможность поделить всю регулируемую зону на 3 части т.е. низкое, среднее, высокое давление.
не понятно про задержку вкл .2 насоса -1сек .это задержка только один раз или каждый раз когда сработают два датчика давления (в "1") .Вот примерный вариант насосной станции.Вы совместили повысительный режим работы станции с режимом чередования насосов. Добавил от себя -при наборе давления (выключении 2 насосов) ,насосы меняются местами (кроме ручного управления) .то есть чередование насосов происходит не только когда должен работать 1 насос в средней зоне длительно ,но и в случае когда время коммутации насосов будет меньше времени включения\выключения повысительного насоса.
Хотел открыть и просмотреть Ваш файл, что-то не получилось...:confused:
Овен Лоджик версия 1.5 build 33 beta.
Выдаёт вот такое сообщение:
делал в 34 версии .
А ссылочку на 34-ю можно?
А то только на 33-ю нашёл...
Задержка насоса 2 делается всякий раз когда срабатывают оба датчика в "1", это сделано для уменьшения вероятности появления гидравлического удара. Про дополнительное чередование насосов не совсем понял, но погоняю посмотрю. У себя вчера нашел ошибку в алгоритме (при обработке входов I3-SA1 и I4-SA2 у меня предусмотрено всего два сценария развития, а на самом дели их 3. Это когда оба допол. выключателя сработали). Но на работу насосной станции не повлияет, ведь в этот момент автоматы насосов выключены. Я все это пишу еще не посмотрев вашу программу. Пока не могу ее отрыть. Отвечает мне - не удалось отрыть файл!
http://files.mail.ru/P4J3UT пока Валерий молчит:)wal79
Ну это когда разбор воды большой и часто включаются два насоса а потом один .И если время чередования выставлено ,например час ,а болтанка случается чаше .Так вот посте работы двух насосов ,когда остается работать один ,он каждый раз разный ,не дожидаясь чередования .Может это и не нужно ,удалить легче ,чем пришивать.:)Там еще много тонкостей не описанных вами ,поэтому сделал как хотелось ,что может и не правильно с точки зрения обьекта управления ,но мне сложно о нем судить ,не зная его параметры.
Спасибо за 34ку. Долго искал все старые версии попадаются. Программу погонял, нашел кое-что, но об этом завтра, сегодня уже поздно. Про чередование посмотрел не задумывал такое, но вдумавшись решил что функция полезная поэтому оставлю. Только вопрос какое максимальное число (сек? или может мин.?) можно выставить, чтоб знать диапазон чисел.
Время переключения насосов задается на макросе КМ в секундах (час=3600 сек) .Какое ставить время переключения (для равномерного износа) может показать практика .У вас сложный случай ,может вообще переключение(по времени) не потребуется ввиду малого времени нахождения в зоне среднего давления .Я не спец по насосам .Может вообще оставить только повысительный режим работы и смену насосов делать при выключении их, по достижению высокого уровня....
дравстуйте rovki.
Погонял немного программу выяснил следующее:
- РД сухой ход не выключает насосы, а должен;
- при I1=0, I4, I5=1 моргает Q2, не должно;
- при I1,I3=1 и при I5= 1или 0 происходит переключение выходов Q (корректно работает только при I5=1, а это давление ниже нижнего уровня Р2. В данном случае значение I5 должно полностью игнорироваться, так как управление в этом случае переходит полностью к реле Р1;
- в некоторых ситуациях включение Q3 происходит с задержкой в 1сек, но это можно не исправлять.
- в среднем положении происходит рокировка насосов, тоже не нужно исправлять, решил что это дажу хорошо, самому в голову не приходило.
Ну вроде и все. В принципе почти работает. Сейчас занимаюсь понемногу "железом", правда еще на бумаге))). Спасибо за помощь, жду известий.
Р.S. Да, кстати так каково предельное значение можно задать в макрос КМ?
1.не было в задании
2.должно мигать ,потому как это неисправность ,когда низкий говорит "давай" ,а верхний говорит нет .такого сочетания состояния датчиков не должно быть (при исправных)
..3.Я отдал приоритет доп.выключателям .и если выключатель говорит выключить Р2 ,то он и не работает ,даже когда датчики давления говорят включится 2 насосам .Только датчики давления стоят на месте ,а насосы меняются местами (если они одинаковые) ,когда нет ручного управления (включение \доп.выключение) ,сказать однозначно какой насос будет работать в среднем давлении не возможно (в данный момент) ,так же как и при высоком давлении -они меняются местами ,каждый раз когда выключается верхний (по давлению) насос ,но это может быть разный насос.
1- Посмотрите внимательно алгоритм, буквально 3 строка- I6-1, ON Q1с/х, ОFF Q3,Q4.
По остальному завтра более аргументировано.
делал не по блок схеме ,а по текстовому описанию ,каюсь ,исправите,не проблема-два "и" по выходу.:) и все остальное ,дебаты разводить не будем ,времени в обрез ,удачи .
Понял отстал. Большое спасибо за помощь. С праздником, с каким затрудняюс сказать!)))
Не всегда есть возможность(время,силы) и желание(интерес) доводить до конца ,уж простите .Попробую на праздниках ,правда и сам не знаю как называется он.Нашел http://100prazdnikov.com/prazdniki_v_noyabre