Rumah pintar. Otak
Ketika semua kabel diletakkan, sakelar dipasang, panel listrik dibuat (semua ini dijelaskan di bagian pertama ), maka Anda dapat melanjutkan ke hal yang paling menarik - memprogram pengontrol. Karena saya tidak menggunakan pengontrol khusus untuk rumah pintar, tetapi pengontrol dari otomasi industri, saya harus memprogram dari awal - ada input, ada output, semuanya perlu diprogram - apa yang harus dilakukan dengan satu sentuhan tombol (beralih tanpa memperbaiki), bagaimana memprogram dimmer , skrip, dll.
Tetapi hal pertama yang pertama. Awalnya, arsitektur rumah pintar saya termasuk komponen berikut:- pengontrol industri Aries dari PLK110-32 (otak utama)
- Modul output analog MU110-6U (digunakan untuk mengontrol dimmer)
- modul untuk memasukkan sinyal analog MV110-8A (ditambahkan kemudian untuk mengambil bacaan dari sensor).
Semua ini terhubung bersama melalui RS-485 dan tusuk Modbus RTU. Pengontrol utama terhubung ke Ethernet untuk komunikasi dengan dunia luar.Untuk mengontrol dari telepon, saya awalnya menggunakan Iridium Mobile , yang diberikan oleh pabrik kepada saya (ya, menggunakan posisi resmi saya untuk keperluan pribadi!). Kemudian saya menggantinya dengan layanan web berdasarkan Node JS. Kemudian juga ditambahkan bagian nirkabel berdasarkan z-wave. Saya berencana untuk menulis tentang semua ini secara terpisah, tetapi untuk sekarang kita kembali ke domba kita.Pemrograman pengontrol dilakukan di lingkungan CoDeSys, yang mendukung 5 bahasa khusus, yang saya kuasai dua - FBD (Function Block Language) dan ST (bahasa mirip-Pascal). Sebenarnya, pada awalnya saya dianggap hanya puas dengan FBD, karena pemrograman dalam bahasa ini terlihat seperti bagan di editor.
Jadi subrutin FBD (atau lebih tepatnya blok fungsi) memproses sakelar di koridor terlihat seperti ini. Selain menyalakan dan mematikan lampu di koridor, sakelar ini digunakan untuk mematikan lampu di seluruh apartemen. Satu tekan mengubah lampu di koridor, dan tekan lama (1 detik) mengaktifkan perintah untuk mematikan semua lampu.Ketika semakin banyak fungsi dan kemampuan ditambahkan, saya sampai pada kesimpulan bahwa bahasa diagram fungsional sama sekali tidak nyaman - ternyata kode rumit, pemrograman lambat, dan debugging sangat merepotkan. Oleh karena itu, saya secara bertahap beralih ke bahasa ST dan saya tidak lagi beralih ke bahasa FBD.Sebagai perbandingan, terlihat seperti ini adalah bagian dari blok fungsi dimmer dalam bahasa ST (setuju, ini adalah masalah yang sama sekali berbeda!):
Karena kita berbicara tentang dimmer, maka kita perlu membicarakannya secara khusus. Ternyata, tidak mudah menemukan dimmer (setrika) yang cocok untuk rumah pintar. Saya tidak mempertimbangkan semua jenis opsi outbred, karena semua fungsi dasar harus diimplementasikan pada teknologi kawat - saya menulis tentang ini sebelumnya. Tag harga untuk dimmer yang saya temui tidak membuat saya senang. Plus, itu perlu untuk memastikan kompatibilitas dengan rumah pintar saya. Awalnya saya memilih INSYTE LDD-400D, dikendalikan oleh ModBus, yang memungkinkan saya untuk menghubungkannya langsung ke controller tanpa modul tambahan, tetapi teman-teman yang menggunakannya dalam proyek mereka entah bagaimana tidak berbicara dengan baik tentang hal itu, dan sebagai hasilnya, saya memutuskan pertanyaan dengan dimmer jadi - menempatkan solid state relay.
Relai dikendalikan (melalui modul output analog) dengan sinyal 0-10V dan output masing-masing 10-220V. Harap dicatat bahwa tegangan minimum pada output relai kondisi-padat bukan 0, tetapi 10V - pada tegangan ini, spiral lampu pijar bersinar dengan jelas. Masalah ini diselesaikan sebagai berikut: di samping relai keadaan-padat, sirkit juga berisi relai sedang (mekanis) biasa, dan pada tingkat program, bila perlu untuk benar-benar mematikan lampu, pengontrol mematikan relai perantara dan memutus sirkuit.Kesulitan kedua dengan organisasi meredupkan cahaya adalah bagaimana membuat antarmuka yang nyaman, dengan mempertimbangkan fakta bahwa saya menggunakan saklar konvensional tanpa memperbaiki sebagai kontrol.Versi pertama antarmuka terlihat seperti ini (sekarang saya tidak ingat persis):- tekan singkat - menyalakan atau mematikan lampu (lampu menyala pada tingkat kecerahan terakhir)
- tekan lama saat lampu menyala - penurunan kecerahan secara bertahap, lalu melewati peningkatan nol
- tekan lama saat lampu mati - kenaikan halus dari nol
- ketuk ganda menyalakan lampu dengan kecerahan penuh.
Saya hidup dengan opsi ini selama beberapa bulan, tetapi kemudian saya sampai pada kesimpulan bahwa itu masih sangat tidak nyaman dan paling sering hanya 3 mode yang digunakan - lampu menyala, lampu mati atau lampu dihidupkan dengan kemarahan minimum. Oleh karena itu, saya menerapkan opsi diskrit sederhana (yang masih sejauh ini):- tekan singkat - nyalakan / matikan lampu (menyala dengan kecerahan penuh)
- tekan lama - menyalakan lampu dengan kecerahan 25% dan beralih ke mode peredup;
- setiap pers selanjutnya bergerak ke langkah berikutnya + 25%. Keluar dari mode peredup - oleh batas waktu.
Seperti yang saya katakan di posting sebelumnya, kontrol tombol tunggal tanpa memperbaiki masih bukan solusi terbaik. Selain contoh dengan redup yang baru saja saya kutip, saya juga menerapkan skenario kompleks untuk menyalakan lampu di ruang tamu. Kami lebih suka untuk tidak menggunakan lampu overhead di ruang tamu dan segera menyalakan lampu meja dan lampu di lemari. Saya mengotomatiskan proses ini dan sekarang kontrol lampu di ruang tamu terlihat seperti ini:- satu klik (jika lampu mati) - menyalakan lampu dan lampu latar
- satu klik (jika lampu menyala) - menyalakan atau mematikan lampu atas
- satu tekan segera setelah yang kedua (ketika lampu overhead dimatikan) - memadamkan lampu meja
- tekan lama - mematikan semua lampu di ruangan
Dua poin pertama dari skenario ini sangat cocok dari sudut pandang model perilaku. Poin terakhir dibuat dengan analogi dengan koridor. Paragraf ketiga sangat kontroversial dan tidak digunakan. Masalahnya adalah bahwa keluarga itu menggerutu, tetapi naskah ini adalah lorong, tetapi tidak ada satu tamu pun yang bisa mengatasi cahaya. Karena itu, untuk skrip Anda memerlukan panel sentuh atau tombol multi-fungsi.Sistem CoDeSys memiliki kemampuan untuk membuat panel visualisasi dan kontrol. PLC110 tidak mendukung antarmuka web, oleh karena itu visualisasi hanya berfungsi di kompleks CoDeSys itu sendiri.
Beginilah tampilan panel kontrol teknis rumah pintar saya. Teknis, karena dalam kehidupan sehari-hari tidak ada yang menggunakannya. Dengan satu pengecualian kecil, panel ini berfungsi sebagai antarmuka jarak jauh untuk mengelola rumah pintar. Jika saya perlu melakukan sesuatu dari jarak jauh, maka saya pergi melalui TeamViewer ke server rumah saya dan menggunakan panel ini. Kebutuhan seperti itu muncul sangat jarang, jadi saya bahkan tidak mengatur akses jarak jauh untuk layanan web.Kesimpulannya, pro dan kontra.Pro:- Keandalan - solusinya telah membuktikan dirinya dengan sangat baik (namun, itu dibangun di atas basis komponen, yang digunakan untuk otomasi industri). Selama ini tidak ada kegagalan tunggal (!!!). Bahkan setelah daya melonjak, sistem mulai tanpa masalah.
- (, , ).
:Seperti yang saya katakan di artikel pertama, sekarang saya akan melihat lebih dekat alternatif, tetapi jika seseorang tiba-tiba ingin mempelajari solusi ini, saya memposting kode sumber yang dibuat di CoDeSys di github . (hanya harap direndahkan dengan kualitas kode.Di bagian berikut - kontrol telepon dan solusi nirkabel. Source: https://habr.com/ru/post/id389053/
All Articles