да, замечательно, уже гораздо лучше
Вид для печати
Во задачку подкинул:D ,Главное что вещь нужная и востребованная ,поэтому надо сделать красиво и удобно пользователю ,с учетом возможностей ПР114 (отсутствия "органов управления":( ). Скоро будет ПР300 и данный макрос можно будет взять за основу .
кусочно-линейная аппроксимация дает погрешность в 2-3 минуты в декабре-январе и июне-июле. Чем севернее, тем погрешность больше.
прибрался и оптимизировал синус.
теперь он в радианах и от минус 2Пи до плюс 2Пи.
именно для кусочно-линейной аппроксимации я и сделал макрос fROM, который легко наращивается, для увеличения числа контрольных точек.
Так AI этой реализацией занимается .Сделает тогда и посмотрите ,что ж мы будем целым миром одну задачу решать .Если б я все мог и было б на это время ,так я бы уже давно сделал сам....Классическое решение этой задачи мне не очень интересно ,хотя и нужно пользователям,слава Богу есть такие как ВЫ и AI.
Вообще, такие функции, как синус, арктангенс натур.логарифм и экспонента надо вводить на уровне разработки, на чем там пишется лоджик, на Си, все же думаю скорость расчета и соотвественно получение результата должно быть на порядок выше, да и "изобретательством" не надо заниматься, в КДС они же идут уже реализованные в виде функций
не знаю сколько членов ряда достаточно для точности, попробуйте...
---upd---
сходимость ряда медленная - сделал 11 слагаемых, и получилось пи=2,8 :D
2*arcSIN(1)
---upd--
похоже лучше сделать кусочно-линейную аппроксимацию.
Вот и на ПР можно определять восход/закат благодаря помощи по мат.функциям
ну хоть бы описание входов \выходов дали .Смотрю ,как баран на новые ворота .Да еще иностранщина кругом ,ну ни все же программисты ,для людей же делаем .
Как мне видится законченный макрос - во первых с привязкой к часам реального времени (синхронизация) ПР ,во вторых на входе макроса вводим координаты места удобным способом ,на выход -булевый сигнал вкл\выкл освещения .
научите (освежите память) как привязываться к часам, у меня во вкладках ни где не видно блоков clock и clock_week, чтоб начать брать импульс отсчета, хотя в справке они представлены. Пока только работает от целочисленного значения времени в секундах, сейчас переработаю первый блок где надо задавать год, месяц, день и по ним будут отображаться восход/закат в часах, минутах
Нужно выбрать ПР с часами ,тогда ФБ появятся в библиотеке.В ПР нет вожможности работать с переменными типа TIME ,поэтому нет смысла на выходе макроса выводить часы ,минуты.....,так же как и задавать дни,года ....по входам .Я ж не зря писал каким должен быть макрос снаружи
То есть нужно еще ПЛК или ИП для вашего варианта к ПР? Ну это не вариант -дорого .
ну если часы уходят не так быстро, то можно просто периодически подключатся и не обязательно с панели, с простого ПК ввели корректировку и достаточно.
Расчет восхода конечно хорошо, но надо учитывать еще и высоту местности, так что это все приблизительно и точность тиктаков не так часто придется вводить
ЗЫ проблема может возникнуть при отключении питания, счет прекратится и по включению не будет совпадать с реальным временем
Для этого в ПР114 есть энергонезависимые переменные.Комп то же не годится .В ПР есть свои встроенные часы .Вот делал как то макрос для привязки к часам ПР.Часы формируют короткий импульс в 00:00 для синхронизации .но вам же нужно знать день,год ...это уже нужно считать снаружи и запоминать в эергонезависимой памяти .Было уже с десяток разных макросов с привязкой к реальному времени ,но нужно искать
Вот еще ,может пригодится http://www.owen.ru/forum/showpost.ph...postcount=3285
энергонезависимость не прокатит, она запомнит вчерашний день и по включению продолжит от того времени считать поэтому и импульс (короткий импульс в 00:00 для синхронизации) тоже не поможет.
Вот с датой все просто, когда заливается проект, тогда же программисту известна дата, проблем нет её занести вместе с координатами местности
от дня ко дню время восхода растет (убывает) на минуты.Если не было питания 1 день ,то не так страшно .Кроме того ,если питания не было менее 24 часов ,то можно сравнивать старое значение (при включении питания) с новым (00-00) и добавить сутки если они (времена) разошлись и заново установить время в 00.на счет даты согласен .
я про это и толковал, когда будет заметно что устройство работает не по солнцу, можно прийти и перепрошить дату, хотя я бы подключился по модбас и подкорректировал, не так много регистров понадобится задействовать
Да нет у колхозников (дачников) модбаса.Тогда уж УТ1 .Эти часы пошли бы для управления теплицей (включением освещения,помимо полива,отопления) .Сложные(дорогие) варианты это просто и не интересно ,нужно найти решение за 3 копейки ,которое стоит 3000рублей:rolleyes: :eek: :D .
Думаю ,что нужно с блоком клок вик сотворить подобное ,что я делал с блоком клок.То есть нужно еще и дни вытащить ,что бы поймать отсутствие питание более 24 часов ,что бы потом установить новое время.
А делов то всего ввести новый тип данных ,что и просил у разработчиков ,что бы использовать часы по максимому
Но главное ВОЗ сдвинулся -есть в первом приближении- макрос солнечных часов ,за что и спасибо ,теперь предстоит модернизация .
Ну вот макрос ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ НА ГОД .На выходе в целочисленном формате показания часов реального времени-месяц,день,час,минута .:eek: ;)
capzap,может изменить макрос сан тайм ,вставить в него макрос часов реального времени ,а снаружи задавать только год ,если нужен и координаты.На выходе один булевый сигнал вкл\выкл????
макрос поиска значения "обратной функции" методом деления пополам (назвал arcFx)
т.е. есть функция y=f(x), и известно Y надо найти X
ограничения - функция должна быть непрерывно возрастающей на промежутке между min и max
PS ну и сразу пример её использования в макросе arcSIN
Не понятно ,но красиво:) ;)
Потом нужно будет все хорошие макросы перетащить в раздел универсальные макросы:rolleyes:
не оч. понятно, потому что много навешано вокруг.
напр. всё что на выходе макроса arcFx - это защита от мигающего выхода, которую вы обычно просите сделать
ну а на входе min/max изначално было 0 и pi/2 соответственно, и тоже решил немного оптимизировать, что бы уменьшить интервал поиска ответа.
если всё это убрать - будет простейшая, самодостаточная, картина. (см. вложение)
т.е. на вход этой конструкции даём Y, на выходе ожидаем Х, из той самой формулы y=F(x)
в нашем примере f(х) - это синус, соответственно формула выглядит так y=sin(x)
а у меня халява закончилась, тоже займусь доработками в след. раз...
Подскажите как можно подружить ПР с МЭ110-224.1М если мастером будет панелька. Можно ли перекинуть значения измерений с МЭ110-224.1М на ПР????
Ага я ее и имел в виду.....спасибо понятно.
встроенные часы сами определяют это ,после того как установишь их (дату-год,месяц ,день). Соответственно и макрос ,что привел ,будет правильно выдавать дни (28,29 или 30,31 ) по месяцам
несколько не так работает мой макрос, без ввода года он получает дату в секундах семидесятого года и потом он все равно ошибется. Я когда ставил на прогон, ошибки все равно были, видимо ограниченное количество знаков после запятой мешает