Здесь важно понять смысл видео, чего не хватает, то и оптимизируете! Про очевидное я и говорить не хочу: две функции однозначно проще(и предпочтительней) 24 ФБ!
Вид для печати
Про функции я не спорю! Но вот с теми макросами мне не совсем очевидно, что такое решение лучше.
Во-первых я бы сравнивал макросы хотя бы выполняющие одну функцию, Вы постоянно лукавите предлагая сравнить два моих макроса с вашим макросом SR24 без детекторов переднего фронта, хотя я неоднократно заявил что для этого я специально придумал схему из двух функций, вот и сравните две функции с 24 ФБ! Теперь 2 вариант: сравниваем ваш макрос SR24 с детекторами переднего фронта, то есть в макросе 48 ФБ с двумя моими макросами, выполняющими туже функцию, короче в моих 2 макросах элементов раза в два меньше будет и функционал выше, про количество ФБ уже писал, что здесь непонятно?! И ещё раз приходится Вам напоминать, что эти макросы создавал для других задач и Вам не для сравнения показал, а для того что бы показать другие пути решения, Вы стали к ним придираться, а не делом заниматься, мне даже пришлось Вам аналог макроса SR24 без детекторов переднего фронта сделать, вот это и сравниваете, неужели это так тяжело?!
Лично для Вас(для любого человека) проще то, что Вы понимаете как это работает и можете поправить(усовершенствовать) под свои нужды! Самая короткая дорога та, которую знаешь!
Ну, это не правда.Цитата:
Вы постоянно лукавите
Вот тут в #4145. https://owen.ru/forum/showthread.php?t=17153&page=415 в макросе уже не было ртриггеров. Их до этого dan75 предложил выкинуть.
В #4147 той темы Вы предложили посмотреть Вашу программу с рампами. Я посмотрел, что потребляет ресурсов она больше чем то, что я выложил в #4145.
Здесь же Вы почему-то уже взяли более старую версию архива еще с ртриг.
Хорошо с этим макросом с 24 SR-триггерами разобрались, заменили их на две функции, во сколько раз упростили в 12 по количеству элементов в гугол раз по количеству ФБ, всё проехали это! Может что ещё можно упростить у Вас в проекте?
Я почему к этому макросу "доколупался", потому что он простой и легко понять его логику работы и то мы его смогли упростить в 12 раз, надо полагать другие, более сложные макросы должны упростится в большее количество раз, я логично рассуждаю?
Короче если напишите ТЗ, необходимую логику работы других макросов, можем попробовать и другие упростить, Вы, надеюсь, не против?
Я предлагаю начать с реле контроля скорости, сразу это коснется не одного, а 24 макросов!
Да, Сергей, я только за. Реле контроля скорости по сравнению с первоначальным вариантом сильно упростил. Куда выкладывать? Тему отдельную создавать нет смысла. Тут где-то (или в разделе "Среда программирования OWEN Logic") была тема про тахометр, туда скину. А с архивом аварий вопрос только с возможной передачей в скаду. Вообще все это мне ни кто задания делать не давал. Да и в должностные обязанности слесаря кип и а разработка и программирование не входят. Так, пытаюсь облегчить себе и оперативному персоналу жизнь. Поэтому сейчас весь архив должен быть легко читаем с экрана ПР. Фото я выкладывал тут. Поэтому хранение даты/времени сейчас сделано именно так. Если при абсолютно такой же читаемости и понятности можно сделать проще, то говорите. В будущем хотелось бы на ПК архив вывести. Но со скадами не работал. Это надо сейчас поискать бесплатную версию какой-либо среды и посмотреть вообще что там и как. Покупать на предприятие программное обеспечение вряд ли кто-то будет.
Scada есть бесплатные, если что. Вариантов много в зависимости от количества необходимых тегов. С увеличением количества тегов варианты выбора уменьшаются :)
Мастерскада на 32 точки бесплатная + ОПС-сервер от инсата на 32 тега тоже бесплатный, короче, я их бы предпочёл:
https://insat.ru/products/section/?category=1535
ну да, 32 точки это супер много :)
Завтра скачаю эту. Еще нашел SIMP Light . У них тоже 32 точки ввода/вывода. Вообще мне сейчас надо самую простую и распространенную потому, что я в этом разбираюсь как свинья в апельсинах:)
Я бы посоветовал не саму простую и распространенную, а исходя из вашей дальнейшей необходимости.
Просто вы сейчас поставите на 32 точки, а потом надумаете расширяться и удивитесь с цены.
Если речь идет только об опросе приборов, никаких плюшек за деньги, то RapidScada (всего то 65 тысяч тегов), плюшки за деньги. И таки можно сделать сервер на Linux
Если понравится Simp Ligth, то смотрите сколько стоит Enterprise версия, так как она позволяет работать с Modbus без OPC серверов
з.ы. на остальное наверное даже время бы не тратил.... Хотя вкусы у всех разные...
Сергей0308 часть из перечисленного относится к платным модулям, либо в зубы C# и делайте сами бесплатно либо формулами либо свои модули пишите. Ядро системы бесплатное и с открытым исходным кодом.
Опрос хоть в цикле, причем нативных драйверов в RapidScada несколько больше, чем в других, но и использовать OPC тоже можно.
Как минимум, чтобы раз в месяц что-то создавалось в автоматическом режиме без нажатий кнопок оператором нужен платный Модуль Автоматического управления.
у Simp Ligth можно взять так же Демо полноценную на час работы. По сути та же Enterprise
https://owen.ru/forum/showthread.php...l=1#post320574
Обновил свой вариант, теперь с окном расшифровки
Решил пойти по пути petera в плане зачем хранить количество секунд от 1970 года, если можно просто упаковать дату и время в 2 регистра (не переменных а именно регистра по 16 бит) и уперся в сохранение времени. Если Дату можно впихнуть в регистр, использую года 0-99 без тысячелетий и столетий, то вот сохранить время в 24-х часовом формате с секундами не получается.... требуется 17 бит.
Как исхитриться чтобы впихнуть в один регистр время с секундами ? может быть с какими-то ограничениями. Есть у кого идеи ?
Легко! Эту классную идею подкинул сергей0308. Просто берите секунды, к ним плюсуйте минуты умноженные на 100, к этому добавляйте часы, умноженные на 10000
В итоге вы получите число формата ччммсс. Если в один регистр лезть ещё с месяцем и годом не хотите, то можно сделать разделитель в виде нуля, а на экране по прикрыть его знаком" :"
59 сек + 59 мин*100 + 23 часа*10000 = и где тут 16 бит ? - вообще 18 бит..... - сорри, действительно 0 упустил
Не, дата в отдельном регистре 16 бит, без столетий влазит. столетия и тысячелетия не проблема организовать в Scada из текущего времени
capzap число получится 235959 а не то, что вам калькулятор показывает... часы умножаются на 10000 а не на 1000
Хорошо, вы умножите часы на 1000, а теперь в Scada обратно как ? что истина будет, чтобы гарантированно получить именно то время, которое зафиксировано единственное и в одном экземпляре ?
Пока придумал только как уместить в 16 бит с шагом секунд, равным 2... тогда влазит
Умножать часы на 1000 не вариант, вы не сможете определить точное время из двух и более совпадений и никакая математика не поможет...
ну не я же нолик пропустил в посте, я специально процитировал его
понятно что этот способ не подойдет, но есть же опыт других, сименс например складывает время в вещественное число, слева от запятой дата, справа время, в этом случае эта формула будет работать, естественно умножая часы на 10000.
ага, заметил. поправил пост... В принципе идея с шагом секунд 2 подойдет... уже лучше, чем ничего. зато ресурсы ПР освободятся от вычислений UTC времени. Конечно оно более универсально, так как любая Scada сможет прочесть....
Сименс не предлагать, он сильно захромает 19 января 2038 года с их то ошибкой....
Как вариант избавиться от года, если в Scada будет передаваться последняя ошибка, можно год воспринимать как текущий. Соответственно в архивах БД будут правильные года записаны. Тогда float нормально подойдет да и просто 32-х битная переменная.
А для отображения в ПР можно и с годом показывать, внутри переменные 32-х битные и влезет все.
Сделал макросы без года, но оказалось что выиграл только 1% ПЗУ, ни ЭСППЗУ ни ОЗУ не уменьшилось... тогда как бы и смысла нет получается.... Так как считать время UTC в Scada это всего две строчки кода, а из таких макросов придется чуть поболее написать...
https://owen.ru/forum/showthread.php...l=1#post320574
Немного переделал, версия 6 на 32 записи. Огромнейшее спасибо Сергей0308 за его макросы EEPROM, правда я их покрошил в пользу использования ресурсов ПР.
Можно еще покрошить до 8 бит, но время с датой и секундами как ни крути останется 32 битным, по этому взял средний вариант.
И какой смысл, чтобы разбить и вновь собрать?
Вложение 48408
Смысл в ресурсах ПР, если у нас вариантов аварий всего 16, то не нужен 32-х битный макрос. Меньше макросов в самом проекте, хотя это конечно не критично.
Кстати когда-то нельзябыло использовать вложенные макросы, было плохо, сейчас все вложенные лезут в проект (что мне тоже не нравится). Было бы супер, если бы сделали возможность в самом макросе настраивать, показывать тот или иной вложенный макрос в общем списке макросов или нет.
Если для ошибок использовать 32-х битную версию, то сразу и ЭСППЗУ прыгает до 39% и ПЗУ тоже увеличивается до 15% (ну это у меняя с некоторыми элементами программы, в чистом виде не проверял).
з.ы. может кто-то будет использовать сокращенный вариант времени и обойдется 16-тью битами для этого. Так еще ресурсы сократит
Со стеком не получилось, скорее всего из-за макросов Fifo идет сильная нагрузка, не посмотрел только сколько мс программа при этом была. Экран при просмотре Аварий просто тух и потом опять показывал значения, и еще показывал на одну ошибку больше, точнее данные времени и ошибок сквозняком показывались, без записи в ячейку. Не стал использовать больше из-за мерцания экрана.
Да, я знаю. На время можно поставить и полноценный, по крайней мере для меня, так как использую макросы времени UTC. Хотя на самом деле надо исхитриться и в 16 бит время загнать. По крайней мере уж дату передавать не так обязательно в Scada. Будет зависеть от самой программы еще. Начнет тормозить или места не будет хватать, буду еще сокращать. Сейчас у меня читается 4 датчика через MB110-8AC плюс этот журнал. Время цикла 7 мс.
Подскажите, где можно найти информацию по созданию меню аварий или как можно считать ошибку из журнала?
В этой теме про аварии писали: https://owen.ru/forum/showthread.php?t=31113&page=7
Непонятно, про какой журнал речь, надеюсь не про Мурзилку, а так никто не запрещает считывать регистры по сети, и всё что в них находится, даже и ошибки или аварии, если это будет соответствующий журнал!
Сейчас изучу тему по вашей ссылке. Я имел ввиду журнал событий, например уходим в аварию и где можно посмотреть во сколько это было и как это сделать в лоджике.
Ещё такой проект у меня есть, с меткой даты-времени, если заинтересует можно найти в какой то теме его подробно обсуждали:
Вложение 49737
Спасибо, изучу.
Вот здесь проект обсуждали: https://owen.ru/forum/showthread.php?t=26216&page=24
Евгений Леонтьев до кучи в изучении https://owen.ru/forum/showthread.php...l=1#post320574
Всем здравствуйте. Есть ПР200 и ИП120. На входа первого подключено 2 аналоговых датчика. Как можно организовать хранение информации о превышении уставки в формате "значение/время/дата" и вывод этого журнала на экран?
Если писать(в случае превышения уставки) с периодом 10 секунд, то памяти ПР200 хватит минут на 10, для одного параметра, Вас, надеюсь такое устраивает?
Если не устраивает - берите МСД-200: https://owen.ru/product/msd200
а лучше сразу ПК + Мастерскада!
Для фиксации события есть проект, чуть выше, можно расширить раз в 5-6, до 150-180 событий, тогда значение параметра не следует фиксировать, будет занимать лишнюю память и будет чуть выше уставки!
Короче, я так понимаю, Вы тему не смотрели(проекты из темы), просто решили написать?
Мой вариант аварий в теме Пр200 в теплице.Добавить время не проблема.Максимум 256.
День добрый.
Вот для своих целей пришлось сваять вывод и журнал аварий в одном флаконе.
Возможно, кому-то еще это сможет пригодиться.
Область применения - ПР200 и ИПП120.
1. Вывод 20 аварий, запись и хранение 10 последних аварий (цикличная перезапись). Вывод можно и уменьшить и увеличить хоть до 100 и более аварий путем убирания добавления блоков внутри макроса, если конечно в этом есть смысл :)
3. Если авария возникает, описание ее (задается динамическим текстом) выводится на экран 3 секунды и записывается в журнал. Если авария остается активной, она циклически отображается на экране, запись в журнал уже не производится. В случае возникновения одновременно нескольких аварий, они выводятся на экран и записываются в журнал по очереди.
3. Во время возникновения аварий программа переходит на отдельный экран, до снятия этих аварий.
4. Время дата (дд.мм.гг чч-мм, без секунд) и код аварии в журнале для сбережения ресурсов прибора упакованы в одну целочисленную переменную и могут в принципе быть переданы по сети.
5. На экран все выводится через динамический текст (хотя изначально были варианты как у тов. Petera - дата и время с доп. нулями и с наложением символами-разделителями поверх). Название любой аварии можно задать индивидуально. Есть очистка журнала (отдельный вход макроса).
Естественно, каждый пункт можно переделать под свои задачи и нужды.
Вложение 68292
Немного видео, как это работает
https://youtu.be/sGMvgnRAicc
Ну и сам макрос в виде проекта