ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

Glavne točke ali o čem govori ta članek

Tema članka je vizualno programiranje PLC ShioTiny za pametni dom, opisan tukaj: ShIoTiny: majhna avtomatizacija, internet stvari ali “šest mesecev pred dopustom”.

Zelo na kratko pojmov, kot je npr vozlišč, komunikacije, dogodki, kot tudi funkcije nalaganja in izvajanja vizualnega programa na ESP8266, ki je osnova PLC-ja ShioTiny.

Uvod ali nekaj organizacijskih vprašanj

V prejšnjem članku o svojem razvoju sem podal kratek pregled zmožnosti krmilnika ShioTiny.

Nenavadno je bilo, da je javnost pokazala precej veliko zanimanje in mi postavila kar nekaj vprašanj. Nekateri prijatelji so mi celo takoj ponudili nakup krmilnika. Ne, nisem proti temu, da zaslužim malo denarja, vendar mi vest ne dopušča, da bi prodajal nekaj, kar je programsko še zelo surovo.

Zato sem na GitHubu objavil binarne datoteke vdelane programske opreme in diagram naprave: firmware + najkrajša navodila + diagram + primeri.

Zdaj lahko vsak sam preklopi ESP-07 in se igra z vdelano programsko opremo. Če kdo res želi točno tako ploščo kot na sliki, potem jih imam več. Pišite po e-pošti [e-pošta zaščitena]. Toda, kot je rekel nepozabni Ogurtsov: "Nisem odgovoren za nič!"

Torej, pojdimo k bistvu: kaj je "vozel" (vozlišče) in "dogodek"? Kako se program izvaja?

Kot običajno, začnimo po vrsti: s prenosom programa.

Kako se program naloži

Začnimo s tem, kaj se zgodi, ko pritisnemo gumb Pošiljanje v urejevalniku ElDraw in naš program vezja, sestavljen iz čudovitih kvadratov, prileti v napravo.

Prvič, na podlagi diagrama, ki smo ga narisali, je zgrajen njegov opis v besedilni obliki.
Drugič, preveri, ali so vsi vhodi vozlišč povezani z izhodi. Ne sme biti "visečih" vhodov. Če je zaznan tak vnos, vezje ne bo naloženo v ShIoTiny in urejevalnik bo prikazal ustrezno opozorilo.

Če je šlo vse dobro, urednik pošlje besedilni opis vezja eno vozlišče naenkrat v ShIoTiny. Seveda se obstoječe vezje iz ShIoTiny najprej odstrani. Nastali besedilni opis se shrani v pomnilnik FLASH.

Mimogrede, če želite vezje odstraniti iz naprave, vanj preprosto naložite prazno vezje (ki ne vsebuje niti enega elementa vozlišča).

Ko je celoten program vezja naložen v ShIoTiny PLC, se začne »izvajati«. Kaj to pomeni?

Upoštevajte, da sta postopka za nalaganje vezja iz pomnilnika FLASH, ko je napajanje vklopljeno, in ob prejemu vezja iz urejevalnika enaka.

Najprej se objekti vozlišč ustvarijo na podlagi njihovega opisa.
Nato se vzpostavijo povezave med vozlišči. To pomeni, da se ustvarijo povezave med izhodi in vhodi in vhodi z izhodi.

In šele po vsem tem se začne cikel izvajanja glavnega programa.

Dolgo sem pisal, vendar celoten postopek - od "nalaganja" vezja iz pomnilnika FLASH do zagona glavnega cikla - traja delček sekunde za vezje 60-80 vozlišč.

Kako deluje glavna zanka? Zelo preprosto. Najprej počaka na nastanek dogodki na nekem vozlišču, nato obdela ta dogodek. In tako v nedogled. No, ali dokler ne naložijo nove sheme na ShIoTiny.

Večkrat sem že omenil stvari, kot so dogodki, vozlišč и komunikacije. Toda kaj je to z vidika programske opreme? Danes se bomo pogovarjali o tem.

Vozlišča, povezave in dogodki

Samo poglejte primere programov vezij za ShioTinyrazumeti, da je diagram sestavljen le iz dveh entitet – vozlišč (ali elementov) in povezav med njima.

Vozlišče, ampak da ali element vezja je virtualna predstavitev nekaterih dejavnost nad podatki. To je lahko aritmetična operacija, logična operacija ali katera koli operacija, ki nam pride na misel. Glavna stvar je, da ima vozlišče vhod in izhod.

Vhod - to je mesto, kjer vozlišče sprejema podatke. Vhodne slike so točke, ki so vedno na levi strani vozlišča.

Izhod - to je mesto, kjer se pridobi rezultat delovanja vozlišča. Izhodne slike so točke, ki se vedno nahajajo na desni strani vozlišča.

Nekatera vozlišča nimajo vhodov. Takšna vozlišča ustvarijo rezultat interno. Na primer konstantno vozlišče ali senzorsko vozlišče: za poročanje o rezultatu ne potrebujejo podatkov iz drugih vozlišč.

Druga vozlišča, nasprotno, nimajo izhodov. To so vozlišča, ki prikazujejo npr. aktuatorje (releje ali kaj podobnega). Sprejemajo podatke, vendar ne ustvarijo računskega rezultata, ki je na voljo drugim vozliščem.

Poleg tega obstaja tudi edinstveno vozlišče komentarjev. Ne dela ničesar, nima vhodov ali izhodov. Njegov namen je biti razlaga na diagramu.

Kaj "dogodek"? Dogodek je pojav novih podatkov v katerem koli vozlišču. Dogodki na primer vključujejo: spremembo stanja vnosa (vozlišče vhod), prejemanje podatkov iz druge naprave (vozlišča MQTT и UDP), potek določenega časovnega obdobja (vozlišča Časovnik и Zamuda) in tako naprej.

Čemu so dogodki? Da, da se ugotovi, v katerem vozlišču so nastali novi podatki in stanja katerih vozlišč je treba spremeniti v zvezi s prejemom novih podatkov. Dogodek tako rekoč "prehaja" vzdolž verige vozlišč, dokler ne obide vseh vozlišč, katerih stanje je treba preveriti in spremeniti.

Vsa vozlišča lahko razdelimo v dve kategoriji.
Pokličimo vozlišča, ki lahko generirajo dogodke "aktivna vozlišča".
Poklicali bomo vozlišča, ki ne morejo ustvariti dogodkov "pasivna vozlišča".

Ko vozlišče ustvari dogodek (to pomeni, da se na njegovem izhodu pojavijo novi podatki), se v splošnem primeru spremeni stanje celotne verige vozlišč, povezanih z izhodom vozlišča generatorja dogodkov.

Da bo jasno, razmislite o primeru na sliki.

ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

Aktivna vozlišča tukaj so Input1, Input2 in Input3. Preostala vozlišča so pasivna. Razmislimo, kaj se zgodi, ko je en ali drug vhod zaprt. Za udobje so rezultati povzeti v tabeli.

ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

Kot lahko vidite, se ob dogodku vzpostavi veriga od izvornega vozlišča dogodka do končnega vozlišča. Stanje tistih vozlišč, ki ne spadajo v verigo, se ne spremeni.

Postavlja se upravičeno vprašanje: kaj se bo zgodilo, če se zgodita dva ali celo več dogodkov hkrati?

Kot ljubitelja dela Gleba Anfilova me mika, da bi radovednega spraševalca poslal k njegovi knjigi »Pobeg od presenečenja«. To je »teorija relativnosti za najmlajše«, ki dobro razloži, kaj pomeni »sočasno« in kako s tem živeti.

Toda praktično je vse veliko preprostejše: ko se zgodita dva ali celo več dogodkov, se vse verige iz vsakega vira dogodka zaporedno zgradijo in obdelajo po vrsti in ne pride do čudežev.

Naslednje povsem legitimno vprašanje radovednega bralca je, kaj se bo zgodilo, če vozlišča povežemo v obroč? Ali kot pravijo med temi vašimi pametnjakoviči, uvedite povratno informacijo. To pomeni, povežite izhod enega od vozlišč z vhodom prejšnjega vozlišča, tako da izhodno stanje tega vozlišča vpliva na stanje njegovega vhoda. Urejevalnik vam ne bo dovolil neposredne povezave izhoda vozlišča z njegovim vhodom. ElDraw. Toda posredno, kot na spodnji sliki, je to mogoče storiti.

Kaj se bo torej zgodilo v tem primeru? Odgovor bo zelo "določen": odvisno od tega, katera vozlišča. Poglejmo primer na sliki.

ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

Ko so vhodni kontakti Input1 odprti, je zgornji vhod vozlišča A 0. Izhod vozlišča A je prav tako 0. Izhod vozlišča B je 1. In končno, spodnji vhod vozlišča A je 1. Vse je jasno. In za tiste, ki jim ni jasno, si spodaj oglejte, kako delujeta vozlišči »IN« in »NE«.

Zdaj zapremo kontakte vhoda Input1, to pomeni, da enega uporabimo na zgornjem vhodu vozlišča A. Tisti, ki se spoznajo na elektroniko, vedo, da bomo dejansko dobili klasično generatorsko vezje z uporabo logičnih elementov. In v teoriji bi moralo takšno vezje neskončno proizvajati zaporedje 1-0-1-0-1-0 ... na izhodu elementov A in B. in 0-1-0-1-0-1-…. Navsezadnje mora dogodek nenehno spreminjati stanje vozlišč A in B, teči v krogu 2-3-2-3-...!

Toda v resnici se to ne zgodi. Vezje bo padlo v naključno stanje - ali bo rele ostal vklopljen ali izklopljen ali pa bo morda nekajkrat zapored rahlo zabrnel vklop in izklop. Vse je odvisno od vremena na južnem polu Marsa. In zato se to dogaja.

Dogodek iz vozlišča Input1 spremeni stanje vozlišča A, nato vozlišča B in tako naprej večkrat v krogu. Program zazna “looping” dogodka in ta karneval prisilno prekine. Po tem so spremembe v stanju vozlišč A in B blokirane, dokler ne pride do novega dogodka. Trenutek, ko se program odloči "nehaj se vrteti v krogu!" - na splošno je odvisno od številnih dejavnikov in se lahko šteje za naključno.

Bodite previdni pri povezovanju vozlov v obroč – učinki ne bodo vedno očitni! Imejte dobro predstavo o tem, kaj in zakaj počnete!

Ali je še mogoče zgraditi generator na vozliščih, ki so nam na voljo? Ja lahko! Toda to zahteva vozlišče, ki lahko samo ustvarja dogodke. In obstaja takšno vozlišče - to je "črta zakasnitve". Poglejmo, kako deluje generator s periodo 6 sekund na spodnji sliki.

ShIoTiny: vozlišča, povezave in dogodki ali funkcije programov za risanje

Ključni element generatorja je vozlišče A - črta zakasnitve. Če spremenite vhodno stanje črte zakasnitve z 0 na 1, se 1 ne bo pojavila na izhodu takoj, ampak šele po določenem času. V našem primeru je to 3 sekunde. Na enak način, če spremenite vhodno stanje črte zakasnitve z 1 na 0, se bo 0 na izhodu pojavila po istih 3 sekundah. Čas zakasnitve je nastavljen v desetinkah sekunde. To pomeni, da vrednost 30 pomeni 3 sekunde.

Posebnost zakasnitvene linije je, da generira dogodek po preteku zakasnitvenega časa.

Predpostavimo, da je bil na začetku izhod črte zakasnitve 0. Po prehodu vozlišča B - inverterja - se ta 0 spremeni v 1 in gre na vhod črte zakasnitve. Nič se ne zgodi takoj. Na izhodu črte zakasnitve bo ostal 0, vendar se bo začelo odštevanje časa zakasnitve. 3 sekunde minejo. In potem črta zakasnitve ustvari dogodek. Na izhodu se pojavi 1. Ta enota se po prehodu skozi vozlišče B - pretvornik - spremeni v 0 in gre na vhod črte zakasnitve. Še 3 sekunde mine... in postopek se ponovi. To pomeni, da se vsake 3 sekunde stanje izhoda linije zakasnitve spremeni iz 0 v 1 in nato iz 1 v 0. Rele klikne. Generator deluje. Perioda impulza je 6 sekund (3 sekunde na izhodu nič in 3 sekunde na izhodu ena).

Toda v resničnih vezjih običajno ni potrebe po uporabi tega primera. Obstajajo posebna časovna vozlišča, ki popolnoma in brez zunanje pomoči ustvarijo zaporedje impulzov z določeno periodo. Trajanje "nič" in "ena" v teh impulzih je enako polovici obdobja.

Za nastavitev občasnih dejanj uporabite vozlišča časovnika.

Ugotavljam, da se takšni digitalni signali, kjer je trajanje "nič" in "ena" enako, imenujejo "meander".

Upam, da sem malo razjasnil vprašanje o tem, kako se dogodki širijo med vozlišči in česa ne storiti?

Zaključek in literatura

Izkazalo se je, da je članek kratek, vendar je ta članek odgovor na vprašanja, ki so se pojavila v zvezi z vozlišči in dogodki.

Ko se strojna programska oprema razvija in se pojavljajo novi primeri, bom pisal o tem, kako programirati ShioTiny majhni članki, dokler bodo zanimivi za ljudi.

Kot prej, diagram, firmware, primeri, opis komponent in vse ostalo je tukaj.

Vprašanja, predlogi, kritike - tukaj: [e-pošta zaščitena]

Vir: www.habr.com

Dodaj komentar