ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

Titik utama utawa apa artikel iki

Topik artikel kasebut yaiku pemrograman PLC visual SioTiny kanggo omah pinter sing diterangake ing kene: ShIoTiny: otomatisasi cilik, Internet samubarang utawa "nem sasi sadurunge preian".

Sedhela banget konsep kayata simpul, komunikasi, acara, uga fitur loading lan nglakokaké program visual ing ESP8266, sing dadi basis saka PLC SioTiny.

Pambuka utawa sawetara pitakonan organisasi

Ing artikel sadurunge babagan pangembangan, aku menehi ringkesan babagan kemampuan pengontrol SioTiny.

Anehe, masyarakat nuduhake kapentingan sing cukup kuat lan takon aku cukup akeh pitakonan. Sawetara kanca malah langsung nawani tuku controller saka aku. Ora, aku ora nglawan entuk dhuwit sethithik, nanging kalbu ora ngidini aku ngedol barang sing isih mentah banget babagan piranti lunak.

Mulane, aku ngirim binari perangkat kukuh lan diagram piranti ing GitHub: firmware + instruksi paling cendhak + diagram + conto.

Saiki kabeh wong bisa kerlip ESP-07 lan muter karo perangkat kukuh dhewe. Yen ana sing pengin papan sing padha kaya ing foto, mula aku duwe sawetara. Tulis nganggo email [email dilindhungi]. Nanging, minangka Ogurtsov ora iso lali, ngandika: "Aku ora tanggung jawab kanggo apa-apa!"

Dadi, ayo menyang titik: apa "simpul tali"(node) lan"acara"? Kepiye program kasebut dieksekusi?

Kaya biasane, ayo miwiti kanthi urutan: kanthi ngundhuh program kasebut.

Carane program dimuat

Ayo dadi miwiti karo apa mengkono nalika kita menet tombol Upload ing editor ElDraw lan sirkuit-program kita, dumadi saka kothak ayu, mabur menyang piranti.

Kaping pisanan, adhedhasar diagram sing wis digambar, deskripsi kasebut ing wangun teks dibangun.
Kapindho, mriksa apa kabeh input simpul disambungake menyang output. Mesthine ora ana lawang sing "gantung". Yen input kasebut dideteksi, sirkuit ora bakal dimuat menyang ShIoTiny, lan editor bakal nampilake bebaya sing cocog.

Yen kabeh mlaku kanthi apik, editor ngirim deskripsi teks saka sirkuit siji-sijine menyang ShioTiny. Mesthi, sirkuit sing ana saka ShIoTiny dicopot dhisik. Katrangan teks sing diasilake disimpen ing memori FLASH.

Miturut cara, yen sampeyan pengin mbusak sirkuit saka piranti, mung mbukak sirkuit kosong menyang (ora ngemot unsur simpul siji).

Sawise kabeh program sirkuit dimuat menyang ShIoTiny PLC, wiwit "eksekusi". Iki artine apa?

Elinga yen pangolahan kanggo mbukak sirkuit saka memori FLASH nalika daya diuripake lan nalika nampa sirkuit saka editor padha.

Kaping pisanan, obyek simpul digawe adhedhasar katrangane.
Banjur sambungan digawe ing antarane simpul. Yaiku, pranala output menyang input lan input menyang output digawe.

Lan mung sawise kabeh iki, siklus eksekusi program utama diwiwiti.

Aku nulis kanggo dangu, nanging kabeh proses - saka "loading" sirkuit saka memori FLASH kanggo miwiti siklus utama - njupuk bagian sekedhik saka detik kanggo sirkuit 60-80 simpul.

Kepiye cara kerja loop utama? Prasaja banget. Pisanan dheweke ngenteni munculé acara ing sawetara simpul, banjur ngolah acara kasebut. Lan sateruse tanpa wates. Ya, utawa nganti dheweke ngunggah skema anyar menyang ShIoTiny.

Kaping pirang-pirang wis dakcritakake kaya ngono acara, simpul и komunikasi. Nanging apa iki saka sudut pandang piranti lunak? Kita bakal ngomong babagan iki dina iki.

Node, sambungan lan acara

Cukup katon ing conto program sirkuit kanggo SioTinykanggo mangerteni yen diagram kasebut mung dumadi saka rong entitas - simpul (utawa unsur) lan sambungan ing antarane.

Knot, nanging ya utawa unsur sirkuit minangka perwakilan virtual saka sawetara tumindak liwat data. Iki bisa dadi operasi aritmetika, operasi logis, utawa operasi apa wae sing ana ing pikiran kita. Ingkang utama yaiku simpul kasebut duwe lawang mlebu lan metu.

entri - iki panggonan ngendi simpul nampa data. Gambar input minangka titik sing tansah ana ing sisih kiwa simpul.

Metu - iki minangka panggonan kanggo njupuk asil saka operasi simpul. Gambar output minangka titik sing tansah ana ing sisih tengen simpul.

Sawetara simpul ora duwe input. Node kasebut ngasilake asil internal. Contone, simpul konstan utawa simpul sensor: ora mbutuhake data saka kelenjar liya kanggo nglaporake asil kasebut.

Node liyane, sebaliknya, ora duwe output. Iki minangka simpul sing nampilake, contone, aktuator (relay utawa sing padha). Dheweke nampa data nanging ora ngasilake asil komputasi sing kasedhiya kanggo simpul liyane.

Kajaba iku, ana uga simpul komentar unik. Ora ana apa-apa, ora ana input utawa output. Tujuane kanggo dadi panjelasan ing diagram.

Apa sing kedadeyan"acara"? Acara yaiku munculé data anyar ing sembarang simpul. Contone, acara kalebu: owah-owahan ing negara input (node input), nampa data saka piranti liyane (node MQTT и UDP), kadaluwarsa wektu tartamtu (node Timer и Wektu tundha) lan sapanunggalane.

Apa kanggo acara? Ya, kanggo nemtokake endi simpul data anyar wis muncul lan negara sing simpul kudu diganti karo panampa data anyar. Acara kasebut, kaya-kaya, "liwat" ing sadawane rantai simpul nganti ngliwati kabeh simpul sing negarane kudu dipriksa lan diganti.

Kabeh simpul bisa dipérang dadi rong kategori.
Ayo nelpon simpul sing bisa ngasilake acara "node aktif".
Kita bakal nelpon simpul sing ora bisa ngasilake acara "simpul pasif".

Nalika simpul njedulake acara (yaiku, data anyar katon ing sawijining output), banjur ing kasus umum negara kabeh chain simpul disambungake menyang output saka owah-owahan simpul generator acara.

Kanggo nggawe cetha, nimbang conto ing gambar.

ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

Node aktif ing kene yaiku Input1, Input2 lan Input3. Node sing isih ana pasif. Ayo dipikirake apa sing kedadeyan nalika siji utawa input liyane ditutup. Kanggo penak, asil diringkes ing tabel.

ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

Nalika sampeyan bisa ndeleng, nalika ana acara, chain dibangun saka simpul sumber acara kanggo simpul pungkasan. Kahanan simpul kasebut sing ora tiba ing ranté ora owah.

Pitakonan sing sah muncul: apa sing bakal kelakon yen loro utawa malah sawetara acara kedadeyan bebarengan?

Minangka pacangan karya Gleb Anfilov, aku digodha ngirim pitakonan penasaran kanggo bukune "Escape from Surprise." Iki minangka "teori relativitas kanggo bocah cilik", sing nerangake kanthi apik apa tegese "simultan" lan cara urip.

Nanging sacoro prakteke kabeh luwih prasaja: nalika ana loro utawa malah sawetara acara, kabeh ranté saka saben sumber acara dibangun lan diproses kanthi urutan, lan ora ana mukjizat.

Pitakonan sabanjure sing sah saka pembaca sing kepengin weruh yaiku apa sing bakal kelakon yen simpul disambungake menyang dering? Utawa, kaya sing dikandhakake ing antarane wong lanang sing pinter iki, kenalake umpan balik. Yaiku, sambungake output saka salah sawijining simpul menyang input saka simpul sadurunge supaya negara output saka simpul iki mengaruhi negara input kasebut. Editor ora ngidini sampeyan nyambungake langsung output simpul menyang input. ElDraw. Nanging kanthi ora langsung, kaya ing gambar ing ngisor iki, iki bisa ditindakake.

Dadi apa sing bakal kelakon ing kasus iki? Jawaban bakal banget "mesthi": gumantung ing kelenjar. Ayo katon ing conto ing tokoh.

ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

Nalika kontak input Input1 mbukak, input ndhuwur simpul A yaiku 0. Output saka simpul A uga 0. Output saka simpul B yaiku 1. Lan, pungkasane, input ngisor simpul A yaiku 1. Kabeh iku cetha. Lan kanggo wong-wong sing ora jelas, deleng ing ngisor iki kanggo katrangan babagan cara kerja simpul "Lan" lan "NO".

Saiki kita nutup kontak input Input1, yaiku, kita aplikasi siji menyang input ndhuwur simpul A. Wong-wong sing wis kenal karo elektronik ngerti manawa kita bakal entuk sirkuit generator klasik kanthi nggunakake unsur logika. Lan ing teori, sirkuit kasebut kudu ngasilake urutan 1-0-1-0-1-0 ... ing output unsur A lan B. lan 0-1-0-1-0-1-.... Sawise kabeh, acara kudu terus-terusan ngganti negara simpul A lan B, mlaku ing bunder 2-3-2-3-...!

Nanging ing kasunyatan iki ora kelakon. Sirkuit bakal tiba ing negara acak - utawa relay bakal tetep urip utawa mati, utawa bisa uga rada buzz lan mateni kaping pirang-pirang saurutan. Iku kabeh gumantung ing cuaca ing kutub kidul Mars. Lan mulane iki kedadeyan.

Acara saka simpul Input1 ngganti negara simpul A, banjur simpul B, lan sateruse ing bunder kaping pirang-pirang. Program kasebut ndeteksi "looping" acara kasebut lan mungkasi karnaval iki kanthi paksa. Sawise iki, owah-owahan ing negara simpul A lan B diblokir nganti kedadeyan anyar. Wayahe program mutusake "mandheg muter ing bunderan!" - ing umum, iku gumantung ing akeh faktor lan bisa dianggep acak.

Ati-ati nalika nyambungake knot menyang dering - efek ora mesthi ketok! Duwe ide sing apik babagan apa lan kenapa sampeyan nindakake!

Apa isih bisa mbangun generator ing kelenjar sing kasedhiya kanggo kita? Ya, sampeyan bisa! Nanging iki mbutuhake simpul sing bisa ngasilake acara dhewe. Lan ana simpul kasebut - iki "garis tundha". Ayo ndeleng kepiye generator kanthi wektu 6 detik bisa digunakake ing gambar ing ngisor iki.

ShioTiny: simpul, sambungan lan acara utawa fitur saka program gambar

Unsur kunci generator yaiku simpul A - garis tundha. Yen sampeyan ngganti negara input saka baris tundha saka 0 kanggo 1, banjur 1 ora bakal katon ing output langsung, nanging mung sawise wektu tartamtu. Ing kasus kita 3 detik. Ing cara sing padha, yen sampeyan ngganti negara input saka baris tundha saka 1 kanggo 0, banjur 0 ing output bakal katon sawise padha 3 detik. Wektu tundha disetel ing sepuluh detik. Tegese, nilai 30 tegese 3 detik.

Fitur khusus saka garis tundha yaiku ngasilake acara sawise wektu tundha wis kadaluwarsa.

Ayo dadi nganggep sing pisanan output saka baris wektu tundha 0. Sawise maringaken simpul B - inverter - iki 0 dadi 1 lan menyang input saka baris tundha. Ora ana kedadeyan langsung. Ing output saka baris tundha, iku bakal tetep 0, nanging countdown wektu tundha bakal miwiti. 3 detik liwat. Lan banjur garis wektu tundha ngasilake acara. Ing output kasebut katon 1. Unit iki, sawise ngliwati simpul B - inverter - dadi 0 lan menyang input saka garis tundha. Liyane 3 detik liwat ... lan proses mbaleni. Sing, saben 3 detik negara output line tundha diganti saka 0 kanggo 1 lan banjur saka 1 kanggo 0. Relay klik. Generator mlaku. Periode pulsa yaiku 6 detik (3 detik ing output nol lan 3 detik ing output siji).

Nanging, ing sirkuit nyata, biasane ora perlu nggunakake conto iki. Ana simpul timer khusus sing sampurna lan tanpa bantuan njaba ngasilake urutan pulsa kanthi periode tartamtu. Durasi "nol" lan "siji" ing pulsa kasebut padha karo setengah periode.

Kanggo nyetel tumindak periodik, gunakake node timer.

Aku nyathet yen sinyal digital kasebut, ing ngendi durasi "nol" lan "siji" padha, diarani "meander".

Muga-muga aku wis njlentrehake pitakonan sethithik babagan carane acara disebarake ing antarane kelenjar lan apa sing ora kudu ditindakake?

Kesimpulan lan referensi

Artikel kasebut dadi cendhak, nanging artikel iki minangka jawaban kanggo pitakonan sing muncul babagan simpul lan acara.

Nalika perangkat kukuh develops lan conto anyar katon, Aku bakal nulis bab carane program SioTiny artikel cilik anggere bakal menarik kanggo wong.

Kaya sadurunge, diagram, perangkat kukuh, conto, gambaran komponen lan kabeh liyane kene.

Pitakonan, saran, kritik - bukak kene: [email dilindhungi]

Source: www.habr.com

Add a comment