fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Акваріум

Уроки програмування Neptune Apex, частина 2: Таймери | Форум морських і рифових акваріумів REEF2REEF

Уроки програмування Neptune Apex, частина 2: Таймери

Це фото з архіву Reef2Ref, люб’язно надане @Dferrari13 ©2019, всі права захищені.

Примітка від редактора:

Ця стаття є частиною 2 серії. Частину 1 можна знайти тут.

Ось короткий зміст всіх статей:

Частина 1 Вступ Частина 2 Таймери Частина 3 Комплект автоматичного поповнення (ATK) Частина 4 Моніторинг живлення Частина 5 Віртуальні виходи Частина 6 Сигналізація Частина 7 Цикли подачі Частина 8 Місячний графік та профілі освітлення (Висновок)

Всі статті цієї серії, написані одним і тим же автором, спочатку були частиною декількох презентацій, зроблених в місцевому акваріумному клубі, присвячених програмуванню контролера Neptune Apex Controller. Стаття передруковується з дозволу автора.

Оскільки ця тема буде дуже цікава для одних читачів, але не цікава для інших, які не автоматизували свої системи, R2R буде публікувати ці статті з програмування щоп’ятниці, поки ми не підійдемо до кінця циклу.

Фотографії, зображення та схеми, включені в цю статтю нижче, люб’язно надані автором, @SuncrestReef ©2019, всі права захищені.

Таймери: OSC, If Time, DOW, Defer, When і Min Time

Однією з найпоширеніших задач в рифінгу є ввімкнення та вимкнення пристрою за певним розкладом, незалежно від того, чи базується він на часі доби, повторюваному циклі з певної кількості хвилин або годин, або на певних днях тижня. Apex надає вам ряд варіантів програмування виходів на основі таймерів, кожен з яких має певне призначення:

  • OSC: Повторюваний інтервал увімкнення/вимкнення, де ви вказуєте кількість хвилин та секунд для увімкнення та кількість хвилин та секунд для вимкнення
  • If Time: Увімкнення або вимкнення між певними проміжками часу на годиннику, з точністю до хвилини
  • DOW: Увімкнення або вимкнення в залежності від дня тижня
  • Відкласти : Затримка часу в хвилинах і секундах для очікування перед увімкненням або вимкненням
  • Коли: Захист від перемикання виходу з AUTO на OFF, якщо він був увімкнений або вимкнений довше, ніж зазначено в хвилинах і секундах. Потребує ручного втручання для відновлення автоматичного програмування.
  • […]

Команда OSC (скорочено від Oscillation – коливання) чудово підходить для вмикання та вимикання речей у повторюваному циклі. Вона використовує три окремі таймери:

OSC MMM:SS/MMM:SS/MMM: SS Потім [ON/OFF/Profile].

Таймери визначають затримку до першого запуску / час до запуску / затримку до наступного запуску

Максимальне значення, яке можна вказати для будь-якого з таймерів – 999:99, що дорівнює 16 годинам, 39 хвилинам, 59 секундам.

Наведемо кілька прикладів:

OSC 000:00/005:00/005:00 Потім ON

Це ввімкне вихід на 5 хвилин, потім вимкне його на 5 хвилин і повторить до нескінченності:

OSC 000:00/007:00/002:00 Потім ON

Вмикає вихід на 7 хвилин, потім вимикає на 2 хвилини і повторює до нескінченності:

OSC 007:00/002:00/000:00 Then ON

Очікування протягом 7 хвилин, потім увімкнення виходу на 2 хвилини, потім вимкнення на 0 хвилин. Потім повториться цикл 7 хвилин вимкнення, 2 хвилини увімкнення.

Однією з причин використання початкової затримки може бути чергування двох різних виходів, щоб вони не працювали в один і той же час, наприклад, дозуючі насоси.

Дивною особливістю таймера початкової затримки є те, що він відраховує час з опівночі 1 січня 1996 року. Якщо значення Вашого таймера, складені разом, рівномірно діляться на 1440 (24 години), то Ваш вихід завжди буде вмикатися в один і той самий час кожного дня. Якщо вони не діляться на 1440, то кожен день буде трохи відрізнятися, і вам доведеться виконати деякі цікаві математичні розрахунки, щоб з’ясувати, коли він увімкнеться в той чи інший день.

Мій особистий приклад:

Я використовую команду OSC для активації мого очищувача для шиї Swabbie кожні шість годин. Swabbie має двигун, який обертає очищувальну щітку в горловині скімера дуже повільно, тому він повинен працювати близько 2 хвилин, щоб ретельно витерти весь бруд з горловини. Ось програмування для мого виходу Swabbie:

Fallback OFF OSC 000:00/002:00/358:00 Then ON If Output EB_3_Skimmer = OFF Then OFF

Перший рядок – Fallback OFF – вказує Apex вимкнути цей вихід, якщо Apex коли-небудь від’єднається від енергетичного батончика, до якого підключений Swabbie. Це також може статися, якщо Apex заблокується і перестане реагувати (що трапляється рідко). Це просто означає, що не слід запускати програму, якщо пристрій Apex не контролює ситуацію.

  • 000:00 = нуль хвилин з опівночі до першого запуску
  • 002:00 = дві хвилини фактичного часу виконання
  • 358:00 = 5 годин 58 хвилин затримки до наступного запуску

Оскільки мої таймери помножені на 4 = 1440, мої таймери OSC запускають Swabbie в один і той же час кожен день: Опівночі, 6 ранку, опівдні, 6 вечора.

Якщо Time використовується для ввімкнення або вимкнення виходу між діапазонами часу:

If Time HH:MM to HH:MM Then [ON/OFF/Profile].

Команда If Time набагато простіша, ніж OSC, але вона має кілька тонкощів, про які слід знати:

Час можна вказати тільки в годинах і хвилинах (в 24-годинному форматі), тому вона не така детальна, як команда OSC, яка дозволяє вказувати хвилини і секунди.

Дуже важливо знати, що час початку та закінчення операції вказується включно. Наприклад:

Set OFF If Time 10:00 to 10:01 Then ON

увімкне вихід о 10:00 і вимкне його о 10:02:

Це означає, що найкоротша тривалість, на яку можна запустити вихід, використовуючи If Time, насправді становить дві хвилини. Ви не можете вказати однакове значення для часу початку і закінчення, тому 10:00 до 10:00 є недійсним. Якщо ви хочете використовувати If Time для більш короткої тривалості, його потрібно комбінувати з оператором Defer:

Set OFF If Time 10:00 to 10:01 Then ON Defer 001:00 Then ON

Це призведе до того, що він буде чекати до 10:01, щоб увімкнутися, а потім вимкнеться о 10:02, фактично даючи вам таймер на 1 хвилину:

Я поясню функцію відкладення більш детально в наступному розділі.

Ще одна порада для If Time полягає в тому, що ви можете охопити опівніч з вашим часом початку і закінчення. Наприклад, я запускаю своє світло в рефугіумі за протилежним графіком від світла в акваріумі:

Вимкнути, якщо час з 18:00 до 08:00, потім увімкнути

Команда DOW (Day Of Week) може використовуватися для увімкнення або вимкнення та виведення в залежності від дня тижня.

Якщо DOW SMTWTFS Тоді [ON/OFF/Profile] (Увімкнути/Вимкнути/Профіль)

Букви для кожного дня тижня є заповнювачами, і якщо ви заміните одну з них дефісом, то цей день отримає значення False і виведення не буде ініційовано для цього дня. Наприклад:

Set OFF If DOW SM-W-FS Then ON

Це ввімкне вихід кожного дня, окрім вівторка та четверга.

DOW особливо корисна в поєднанні з командою If Time. Припустимо, ви хочете, щоб циркуляційний насос працював один раз на день протягом години щодня, крім суботи, коли ви проводите технічне обслуговування:

Set OFF If Time 12:00 to 12:59 Then ON If DOW ——S Then OFF

Пам’ятайте з мого вступного розділу, що останній рядок програми, який оцінює значення True, буде диктувати, що буде зроблено на виході. У цьому прикладі команда If Time істинна з 12:00 до 12:59, але команда DOW буде оцінювати True тільки в суботу, оскільки це єдиний заповнювач, не замінений дефісом.

Команда Defer використовується для того, щоб відкласти виконання дії над виводом на певний час.

Defer MMM:SS Then [ON/OFF] (Відкласти МММ:СС Потім [ВКЛ/ВЫКЛ])

Ця команда відрізняється від інших команд увімкнення/вимкнення, оскільки вона фактично затримує вихід від переходу з вимкненого стану в увімкнений або з увімкненого стану в вимкнений на вказаний проміжок часу. У наведеному вище прикладі з використанням If Time нам потрібно, щоб вихід увімкнувся менш ніж на 2 хвилини, але If Time не може цього зробити, тому була використана затримка Defer, щоб запобігти увімкненню виходу до закінчення 1 хвилини затримки.

Затримка особливо корисна, коли вихід базується на показаннях датчика або сенсора. Наприклад, якщо у відстійнику встановлений поплавковий вимикач, який запускає насос ATO при низькому рівні води, але на поверхні води є невеликі брижі, які можуть змусити поплавковий вимикач підніматися і опускатися разом з рухом води, це може призвести до швидкого вмикання і вимикання насоса ATO без вагомої причини. Щоб запобігти цьому, можна використовувати команду “Відкласти”, щоб дочекатися, поки поплавковий вимикач не покаже постійні показання протягом певного періоду часу, гарантуючи, що рівень води дійсно достатньо низький, щоб виправдати ввімкнення насоса ATO:

Set OFF If Float1 Open Then ON Defer 000:10 Then ON

У цьому прикладі поплавковий вимикач повинен безперервно повідомляти про відкриття протягом 10 секунд, перш ніж насос буде фактично ввімкнено. Як тільки поплавковий вимикач вперше подасть сигнал “Відкрито”, почнеться зворотний відлік таймера відстрочки. Якщо через 3 секунди поплавковий вимикач повідомляє про закриття, то таймер скидається на 10 секунд.

Хорошою аналогією для Defer є годинник кидків в баскетболі NBA (вибачте тим, хто не є фанатом баскетболу, але читає цю статтю). Як тільки ваша команда отримує м’яч, у вас є 24 секунди, щоб зробити кидок. Якщо м’яч не торкається кільця, м’яч передається супернику. Але якщо ви зробите кидок, який зачепить кільце, але не потрапить у кільце, час кидка обнуляється, і у вас є ще 24 секунди, щоб спробувати ще раз. Відстрочка – це просто таймер зворотного відліку, після закінчення якого вихід може змінити стан.

Щоб просунути наш приклад з поплавковим вимикачем на крок далі, я додам ще одну відстрочку, щоб впоратися з ситуацією, коли насос АТО додає воду, а поплавковий вимикач нарешті повідомляє “Закрито” через підвищення рівня води. Оскільки на поверхні води все ще є брижі, він може перемикатися між відкритим і закритим положеннями кілька разів, перш ніж остаточно зупиниться на закритому.

Set OFF If Float1 Open Then ON Defer 000:10 Then ON Defer 000:10 Then OFF

Оператори відкладання можуть бути розміщені в будь-якому місці в списку програмних рядків, оскільки вони застосовуються до самого виводу і не є частиною того, що оцінюється як True або False. Інший спосіб представити це наступним чином:

Set OFF If Float1 Open Then ON – – – – – – – – – – – – – – Defer 000:10 Then ON Defer 000:10 Then OFF (не ставте рисочки у своїй програмі…. це просто для візуалізації)

Програма знаходиться над пунктирною лінією, і останній рядок, який оцінюється як True, диктує, як встановити стан виходу. Оператори Defer потім контролюють, як довго чекати, перш ніж встановлювати стан виводу.

Команда When є дуже унікальною в програмуванні Apex. Вона використовується для перемикання плитки виходу з AUTO на OFF, якщо виконується певна умова. Вона найчастіше використовується для програмування насоса АТО, оскільки несправний оптичний вимикач або поплавковий вимикач може дозволити насосу АТО продовжувати затоплювати ваш відстійник прісною водою, завдаючи шкоди мешканцям вашого акваріума і затоплюючи ваш будинок; або, можливо, резервуар АТО порожній, а насос продовжує працювати всуху. Після спрацьовування вихід переходить у режим ручного вимкнення, і програмування більше не буде працювати, поки ви вручну не переведете повзунок назад у положення AUTO.

Використовуючи наш приклад насоса ATO, наведений вище, тут ми додаємо команду Коли. Це передбачає, що наш насос ATO ніколи не повинен працювати більше 3 хвилин поспіль при нормальних умовах випаровування.

Set OFF If Float1 Open Then ON Defer 000:10 Then ON Defer 000:10 Then OFF When ON > 003:00 Потім вимкнути

Як і команда Defer, When може бути розміщена в будь-якому місці в списку рядків програмування. Я, як правило, розміщую команди Defer і When в кінці для зручності читання і усунення несправностей.

  • Defer – затримає зміну стану розетки на заданий проміжок часу
  • Min Time – забезпечить перебування розетки в поточному стані протягом мінімального періоду часу

Знову ж таки, найпоширенішим прикладом Min Time є насос АТО. Замість того, щоб вмикати і вимикати його кожні кілька хвилин, як це диктує поплавковий вимикач для найменшої кількості випаровування, Ви можете змусити його працювати рідше, навіть якщо це означає, що йому потрібно перекачувати воду трохи довше.

Set OFF If Float1 Open Then ON Defer 000:10 Then ON Defer 000:10 Then OFF When ON > 003:00 Потім вимкнено Мін. час 060:00 Потім вимкнено

Це означає, що вихід повинен залишатися вимкненим щонайменше 60 хвилин. Після закінчення цього таймера вказані команди програмування знову працюватимуть у звичайному режимі.

Сподіваємось, цей підручник був корисним. Слідкуйте за наступною статтею в цій серії – програмування та усунення несправностей ATK – яка ґрунтується на тому, що я висвітлив тут.

Запрошуємо всіх наших читачів приєднатися до форуму Reef2Reef. Зареєструватися легко, безкоштовно, а займатися рифівництвом набагато простіше і цікавіше в співтоваристві колег-акваріумістів. Ми пишаємося теплим і сімейним форумом, де раді кожному. Ви також знайдете багато конкурсів та розіграшів від наших спонсорів.

Джон Халсі – любитель рифів, який тримає Red Sea Reefer XL 425 у своїй вітальні. Він новачок у рифінгу з досвідом трохи більше одного року, але йому вдалося зберегти здоровий змішаний риф, дотримуючись найкращих практик, вивчених тут, на R2R, а також беручи активну участь у своєму місцевому клубі акваріумістів – PNWMAS – в Портленді, штат Орегон. Джон вийшов на пенсію зі своєї 30-річної кар’єри в галузі ІТ-підтримки і використав цей технічний досвід з користю, автоматизувавши більшу частину свого акваріумного обладнання за допомогою розгалуженої системи Neptune Apex.

Source: www.reef2reef.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *