ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

Punti ewlenin jew dwar xiex huwa dan l-artikolu

Is-suġġett tal-artiklu huwa l-ipprogrammar viżwali tal-PLC ShIoTiny għad-dar intelliġenti deskritta hawn: ShIoTiny: awtomazzjoni żgħira, Internet tal-affarijiet jew "sitt xhur qabel vaganza".

Fil-qosor ħafna kunċetti bħal għoqiedi, komunikazzjonijiet, iżviluppi, kif ukoll karatteristiċi ta 'tagħbija u eżekuzzjoni ta' programm viżwali fuq ESP8266, li hija l-bażi tal-PLC ShIoTiny.

Introduzzjoni jew ftit mistoqsijiet organizzattivi

Fl-artiklu preċedenti dwar l-iżvilupp tiegħi, tajt ħarsa ġenerali qasira tal-kapaċitajiet tal-kontrollur ShIoTiny.

B'mod stramb, il-pubbliku wera interess pjuttost qawwi u staqsieni ħafna mistoqsijiet. Xi ħbieb saħansitra offrew immedjatament li jixtru kontrollur mingħandi. Le, jien mhux kontra li naqla 'ftit flus, iżda l-kuxjenza tiegħi ma tippermettilix li nbiegħ xi ħaġa li għadha mhux raffinata ħafna f'termini ta' softwer.

Għalhekk, ippubblikajt il-binarji tal-firmware u d-dijagramma tat-tagħmir fuq GitHub: Firmware + istruzzjonijiet iqsar + dijagramma + eżempji.

Issa kulħadd jista 'jteptep l-ESP-07 u jilgħab bil-firmware huma stess. Jekk xi ħadd verament irid eżattament l-istess bord bħal fir-ritratt, allura għandi diversi minnhom. Ikteb bl-email [protett bl-email]. Iżda, kif kien jgħid l-indimentikabbli Ogurtsov: "Jien m'iniex responsabbli għal xejn!"

Allura, ejja naslu għall-punt: x'inhu "għoqda" (node) u "avveniment"? Kif jitwettaq il-programm?

Bħas-soltu, ejja nibdew fl-ordni: billi tniżżel il-programm.

Kif jitgħabba l-programm

Nibdew b'dak li jiġri meta nagħfas buttuna Upload fl-editur ElDraw u l-programm taċ-ċirkwit tagħna, li jikkonsisti fi kwadri sbieħ, itir fl-apparat.

L-ewwelnett, ibbażata fuq id-dijagramma li ġibna, hija mibnija d-deskrizzjoni tagħha f'forma ta 'test.
It-tieni nett, jiċċekkja jekk l-inputs kollha tan-nodi humiex konnessi mal-outputs. M'għandux ikun hemm daħliet "mdendlin". Jekk jinstab input bħal dan, iċ-ċirkwit mhux se jitgħabba f'ShIoTiny, u l-editur juri twissija korrispondenti.

Jekk kollox mar tajjeb, l-editur jibgħat deskrizzjoni test taċ-ċirkwit node wieħed kull darba lil ShIoTiny. Naturalment, iċ-ċirkwit eżistenti minn ShIoTiny jitneħħa l-ewwel. Id-deskrizzjoni tat-test li tirriżulta hija maħżuna fil-memorja FLASH.

Mill-mod, jekk trid tneħħi ċirkwit minn apparat, imbagħad sempliċement tagħbija ċirkwit vojt fih (li ma fihx element ta 'nodu wieħed).

Ladarba l-programm taċ-ċirkwit kollu jitgħabba fis-ShIoTiny PLC, jibda "jesegwixxi". Xi tfisser?

Innota li l-proċessi għat-tagħbija ta 'ċirkwit mill-memorja FLASH meta l-enerġija tkun mixgħula u meta tirċievi ċirkwit mill-editur huma identiċi.

L-ewwel, l-oġġetti node huma maħluqa bbażati fuq id-deskrizzjoni tagħhom.
Imbagħad isiru konnessjonijiet bejn in-nodi. Jiġifieri, jiġu ġġenerati rabtiet ta' outputs għal inputs u inputs għal outputs.

U biss wara dan kollu jibda ċ-ċiklu ewlieni ta 'eżekuzzjoni tal-programm.

Jien ktibt għal żmien twil, iżda l-proċess kollu - minn "tagħbija" taċ-ċirkwit mill-memorja FLASH sal-bidu taċ-ċiklu prinċipali - jieħu frazzjoni ta 'sekonda għal ċirkwit ta' 60-80 nodi.

Kif jaħdem il-linja prinċipali? Sempliċi ħafna. L-ewwel jistenna l-emerġenza iżviluppi f'xi node, imbagħad jipproċessa dak l-avveniment. U hekk bla tarf. Ukoll, jew sakemm itellgħu skema ġdida lil ShIoTiny.

Diversi drabi diġà semmejt affarijiet simili iżviluppi, għoqiedi и komunikazzjonijiet. Imma x'inhu dan mil-lat tas-software? Illum nitkellmu dwar dan.

Nodi, konnessjonijiet u avvenimenti

Ħares lejn l-eżempji ta 'programmi ta' ċirkwit għal ShIoTinybiex tifhem li d-dijagramma tikkonsisti biss minn żewġ entitajiet - nodi (jew elementi) u l-konnessjonijiet bejniethom.

Knot, imma iva jew element taċ-ċirkwit hija rappreżentazzjoni virtwali ta’ xi wħud attività fuq id-data. Din tista’ tkun operazzjoni aritmetika, operazzjoni loġika, jew kwalunkwe operazzjoni li tiġi f’moħħna. Il-ħaġa prinċipali hija li n-nodu għandu dħul u ħruġ.

Input - dan huwa l-post fejn in-nodu jirċievi data. L-immaġini tal-input huma punti li huma dejjem fuq in-naħa tax-xellug tan-nodu.

Output - dan huwa l-post fejn ir-riżultat tal-operazzjoni tan-node jiġi rkuprat. L-immaġini tal-ħruġ huma punti li dejjem jinsabu fuq in-naħa tal-lemin tan-node.

Xi nodi m'għandhomx inputs. Tali nodi jiġġeneraw ir-riżultat internament. Pereżempju, nodu kostanti jew nodu tas-sensor: m'għandhomx bżonn dejta minn nodi oħra biex jirrappurtaw ir-riżultat.

Nodi oħra, għall-kuntrarju, m'għandhom l-ebda outputs. Dawn huma nodi li juru, pereżempju, attwaturi (relays jew xi ħaġa simili). Jaċċettaw data iżda ma jiġġenerawx riżultat komputazzjonali li huwa disponibbli għal nodi oħra.

Barra minn hekk, hemm ukoll node ta 'kumment uniku. Ma jagħmel xejn, m'għandu l-ebda input jew output. L-iskop tiegħu huwa li jkun spjegazzjoni fuq id-dijagramma.

X'ġara "avveniment"? Avveniment hija l-emerġenza ta 'data ġdida fi kwalunkwe node. Pereżempju, l-avvenimenti jinkludu: bidla fl-istat tal-input (node input), li tirċievi data minn apparat ieħor (nodi MQTT и UDP), l-iskadenza ta 'perjodu speċifikat ta' żmien (nodes Timer и Dewmien) u l-bqija.

Għal xiex huma l-avvenimenti? Iva, sabiex jiġi ddeterminat f'liema nod ħarġet data ġdida u l-istati ta 'liema nodi jeħtieġ li jinbidlu b'rabta mal-wasla ta' data ġdida. L-avveniment, kif kien, "jgħaddi" tul il-katina tan-nodi sakemm jinjora n-nodi kollha li l-istat tagħhom jeħtieġ li jiġi ċċekkjat u mibdul.

In-nodi kollha jistgħu jinqasmu f'żewġ kategoriji.
Ejja nsejħu nodi li jistgħu jiġġeneraw avvenimenti "nodi attivi".
Se nsejħu nodi li ma jistgħux jiġġeneraw avvenimenti "nodi passivi".

Meta node jiġġenera avveniment (jiġifieri, dejta ġdida tidher fl-output tiegħu), allura fil-każ ġenerali l-istat tal-katina kollha ta 'nodi konnessi mal-output tan-nodu tal-ġeneratur tal-avveniment jinbidel.

Biex tagħmilha ċara, ikkunsidra l-eżempju fil-figura.

ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

In-nodi attivi hawn huma Input1, Input2 u Input3. In-nodi li fadal huma passivi. Ejja nikkunsidraw x'jiġri meta input wieħed jew ieħor jingħalaq. Għall-konvenjenza, ir-riżultati huma miġbura fil-qosor f'tabella.

ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

Kif tistgħu taraw, meta jseħħ avveniment, tinbena katina min-nodu tas-sors tal-avveniment sal-nodu finali. L-istat ta 'dawk in-nodi li ma jaqgħux fil-katina ma jinbidilx.

Tqum mistoqsija leġittima: x'se jiġri jekk iseħħu tnejn jew saħansitra diversi avvenimenti fl-istess ħin?

Bħala dilettant tax-xogħol ta’ Gleb Anfilov, nitħajjar nibgħat mistoqsija kurjuża għall-ktieb tiegħu “Escape from Surprise.” Din hija "teorija tar-relattività għaż-żgħar", li tispjega tajjeb xi tfisser "simultanju" u kif tgħix magħha.

Iżda prattikament kollox huwa ħafna aktar sempliċi: meta jseħħu żewġ jew saħansitra diversi avvenimenti, il-ktajjen kollha minn kull sors ta 'avveniment jinbnew u jiġu pproċessati b'mod sekwenzjali min-naħa tagħhom, u ma jseħħu l-ebda mirakli.

Il-mistoqsija li jmiss kompletament leġittima minn qarrej kurjuż hija x'se jiġri jekk in-nodi huma konnessi f'ċirku? Jew, kif jgħidu fost dawn il-ġuvini intelliġenti tiegħek, daħħal feedback. Jiġifieri, qabbad l-output ta 'wieħed min-nodi mal-input tan-node preċedenti sabiex l-istat tal-output ta' dan in-node jaffettwa l-istat tal-input tiegħu. L-editur mhux se jippermettilek tikkonnettja direttament l-output ta 'node mal-input tiegħu. ElDraw. Iżda indirettament, bħal fil-figura hawn taħt, dan jista 'jsir.

Allura x'se jiġri f'dan il-każ? It-tweġiba se tkun "definita" ħafna: skond liema nodi. Ejja nħarsu lejn l-eżempju fil-figura.

ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

Meta l-kuntatti tad-dħul ta 'Input1 huma miftuħa, l-input ta' fuq tan-node A huwa 0. L-output tan-node A huwa wkoll 0. L-output tan-node B huwa 1. U, finalment, l-input t'isfel tan-node A huwa 1. Kollox huwa ċara. U għal dawk li mhumiex ċari, ħares hawn taħt għal deskrizzjoni ta 'kif jaħdmu n-nodi "U" u "MHUX".

Issa nagħlqu l-kuntatti tal-input Input1, jiġifieri, napplikaw wieħed għall-input ta 'fuq tan-node A. Dawk li huma familjari mal-elettronika jafu li fil-fatt se jkollna ċirkwit ġeneratur klassiku bl-użu ta 'elementi loġiċi. U fit-teorija, ċirkwit bħal dan għandu jipproduċi bla tmiem is-sekwenza 1-0-1-0-1-0... fil-ħruġ tal-elementi A u B. u 0-1-0-1-0-1-…. Wara kollox, l-avveniment għandu kontinwament ibiddel l-istat tan-nodi A u B, li jimxi f'ċirku 2-3-2-3-...!

Imma fir-realtà dan ma jseħħx. Iċ-ċirkwit se jaqa 'fi stat każwali - jew ir-relay se jibqa' mixgħul jew mitfi, jew forsi ftit buzz mixgħul u jintfew diversi drabi wara xulxin. Kollox jiddependi mit-temp fil-arblu tan-nofsinhar ta’ Mars. U hu għalhekk li jiġri dan.

Avveniment min-node Input1 jibdel l-istat tan-node A, imbagħad in-node B, u l-bqija f'ċirku bosta drabi. Il-programm jiskopri l-"looping" tal-avveniment u jwaqqaf dan il-karnival bil-forza. Wara dan, il-bidliet fl-istat tan-nodi A u B huma mblukkati sakemm iseħħ avveniment ġdid. Il-mument li fih il-programm jiddeċiedi "jieqaf iddur fiċ-ċrieki!" - b'mod ġenerali, jiddependi fuq ħafna fatturi u jista 'jitqies bħala każwali.

Oqgħod attent meta tgħaqqad l-għoqiedi f'ċirku - l-effetti mhux dejjem ikunu ovvji! Ikollok idea tajba ta 'x'u għaliex qed tagħmel!

Għadu possibbli li jinbena ġeneratur fuq in-nodi disponibbli għalina? Iva tista! Iżda dan jeħtieġ node li jista 'jiġġenera avvenimenti innifsu. U hemm tali nodu - din hija l-"linja tad-dewmien". Ejja naraw kif jaħdem ġeneratur b'perjodu ta '6 sekondi fil-figura hawn taħt.

ShIoTiny: Nodi, Links, u Avvenimenti jew Karatteristiċi ta' Programmi ta' Tpinġija

L-element ewlieni tal-ġeneratur huwa node A - il-linja tad-dewmien. Jekk tibdel l-istat tad-dħul tal-linja tad-dewmien minn 0 għal 1, allura 1 mhux se jidher fl-output immedjatament, iżda biss wara żmien speċifikat. Fil-każ tagħna huwa 3 sekondi. Bl-istess mod, jekk tibdel l-istat tad-dħul tal-linja tad-dewmien minn 1 għal 0, allura 0 fl-output se jidher wara l-istess 3 sekondi. Il-ħin tad-dewmien huwa stabbilit f'għexieren ta' sekonda. Jiġifieri, il-valur 30 ifisser 3 sekondi.

Karatteristika speċjali tal-linja tad-dewmien hija li tiġġenera avveniment wara li l-ħin tad-dewmien ikun skada.

Ejja nassumu li inizjalment l-output tal-linja tad-dewmien kien 0. Wara li jgħaddi n-node B - l-inverter - dan 0 jinbidel f'1 u jmur għall-input tal-linja tad-dewmien. Xejn ma jiġri mill-ewwel. Fl-output tal-linja tad-dewmien, se jibqa '0, iżda jibda l-countdown tal-ħin tad-dewmien. jgħaddu 3 sekondi. U mbagħad il-linja tad-dewmien tiġġenera avveniment. Fl-output tagħha jidher 1. Din l-unità, wara li tgħaddi min-node B - l-inverter - tinbidel f'0 u tmur għall-input tal-linja tad-dewmien. Għaddew 3 sekondi oħra... u l-proċess jirrepeti. Jiġifieri, kull 3 sekondi l-istat tal-output tal-linja tad-dewmien jinbidel minn 0 għal 1 u mbagħad minn 1 għal 0. Ir-relay jikklikkja. Il-ġeneratur qed jaħdem. Il-perjodu tal-polz huwa ta '6 sekondi (3 sekondi fl-output żero u 3 sekondi fl-output wieħed).

Iżda, f'ċirkwiti reali, ġeneralment ma jkunx hemm bżonn li jintuża dan l-eżempju. Hemm nodi ta 'timer speċjali li perfettament u mingħajr għajnuna esterna jiġġeneraw sekwenza ta' impulsi b'perjodu partikolari. It-tul ta '"żero" u "wieħed" f'dawn il-polz huwa ugwali għal nofs il-perjodu.

Biex tissettja azzjonijiet perjodiċi, uża nodi tat-tajmer.

Ninnota li sinjali diġitali bħal dawn, fejn it-tul ta '"żero" u "wieħed" huma ugwali, jissejħu "meander".

Nittama li ċċarajt ftit il-mistoqsija dwar kif l-avvenimenti huma propagati bejn in-nodi u x'm'għandux isir?

Konklużjoni u referenzi

L-artiklu rriżulta li kien qasir, iżda dan l-artikolu huwa tweġiba għal mistoqsijiet li qamu dwar nodi u avvenimenti.

Hekk kif jiżviluppa l-firmware u jidhru eżempji ġodda, se nikteb dwar kif nipprogramma ShIoTiny artikli żgħar sakemm ikun interessanti għan-nies.

Bħal qabel, dijagramma, firmware, eżempji, deskrizzjoni tal-komponenti u kollox il-bqija hawn.

Mistoqsijiet, suġġerimenti, kritika - mur hawn: [protett bl-email]

Sors: www.habr.com

Żid kumment