ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

Pääkohdat tai mistä tässä artikkelissa on kyse

Artikkelin aiheena on visuaalinen PLC-ohjelmointi ShioTiny tässä kuvatulle älykodille: ShioTiny: pieni automaatio, esineiden internet tai "kuusi kuukautta ennen lomaa".

Hyvin lyhyesti käsitteitä, kuten sivustot, связи, kehitys, sekä visuaalisen ohjelman lataamisen ja suorittamisen ominaisuudet ESP8266, joka on PLC:n perusta ShioTiny.

Johdanto tai pari organisatorista kysymystä

Edellisessä kehitystäni käsittelevässä artikkelissa annoin lyhyen yleiskatsauksen ohjaimen ominaisuuksista ShioTiny.

Kummallista kyllä, yleisö osoitti melko suurta kiinnostusta ja esitti minulle melko paljon kysymyksiä. Jotkut ystävät jopa tarjoutuivat heti ostamaan minulta ohjaimen. Ei, en vastusta pienen rahan ansaitsemista, mutta omatuntoni ei salli minun myydä jotain, joka on vielä erittäin raakaa ohjelmiston suhteen.

Siksi lähetin laiteohjelmiston binaarit ja laitekaavion GitHubiin: laiteohjelmisto + lyhyimmät ohjeet + kaavio + esimerkkejä.

Nyt jokainen voi flash-muistia ESP-07 ja pelata laiteohjelmistolla itse. Jos joku todella haluaa täsmälleen saman taulun kuin kuvassa, niin minulla on niitä useita. Kirjoita sähköpostilla [sähköposti suojattu]. Mutta kuten unohtumaton Ogurtsov tapasi sanoa: "En ole vastuussa mistään!"

Joten mennään asiaan: mikä on "solmu" (solmu) ja "tapahtuma"? Miten ohjelma suoritetaan?

Kuten tavallista, aloitetaan järjestyksessä: lataamalla ohjelma.

Miten ohjelma ladataan

Aloitetaan siitä, mitä tapahtuu, kun painamme painiketta Lataa editorissa ElDraw ja kauniista neliöistä koostuva piiriohjelmamme lentää laitteeseen.

Ensinnäkin piirtämämme kaavion perusteella rakennetaan sen kuvaus tekstimuodossa.
Toiseksi se tarkistaa, onko kaikki solmutulot kytketty lähtöihin. Ei saa olla "riippuvia" sisäänkäyntiä. Jos tällainen tulo havaitaan, piiriä ei ladata ShioTinyyn ja editori näyttää vastaavan varoituksen.

Jos kaikki meni hyvin, editori lähettää piirin tekstikuvauksen yksi solmu kerrallaan ShioTinylle. Tietenkin ShioTinyn olemassa oleva piiri poistetaan ensin. Tuloksena oleva tekstikuvaus tallennetaan FLASH-muistiin.

Muuten, jos haluat poistaa piirin laitteesta, lataa siihen yksinkertaisesti tyhjä piiri (ei sisällä yhtä solmuelementtiä).

Kun koko piiriohjelma on ladattu ShiOTiny PLC:hen, se alkaa "suorita". Mitä se tarkoittaa?

Huomaa, että prosessit piirin lataamiseksi FLASH-muistista, kun virta kytketään päälle ja kun piiri vastaanotetaan editorista, ovat identtiset.

Ensin luodaan solmuobjektit niiden kuvauksen perusteella.
Sitten solmujen välille muodostetaan yhteydet. Toisin sanoen tuotosten linkit tuloihin ja tulojen lähtöihin luodaan.

Ja vasta kaiken tämän jälkeen alkaa pääohjelman suoritussykli.

Kirjoitin pitkään, mutta koko prosessi - piirin "lataamisesta" FLASH-muistista pääjakson käynnistämiseen - kestää sekunnin murto-osan 60-80 solmun piirissä.

Miten pääsilmukka toimii? Erittäin yksinkertainen. Ensin hän odottaa ilmestymistä kehitys jossain solmussa, käsittelee sitten kyseisen tapahtuman. Ja niin loputtomasti. No, tai kunnes he lataavat uuden järjestelmän ShioTinyyn.

Olen jo useaan otteeseen maininnut mm kehitys, sivustot и связи. Mutta mitä tämä on ohjelmiston näkökulmasta? Puhumme tästä tänään.

Solmut, yhteydet ja tapahtumat

Katso vain esimerkkejä piiriohjelmista ShioTinyymmärtää, että kaavio koostuu vain kahdesta entiteetistä - solmuista (tai elementeistä) ja niiden välisistä yhteyksistä.

solmu, mutta kyllä tai piirielementti on joidenkin virtuaalinen esitys toiminta datan yli. Tämä voi olla aritmeettinen operaatio, looginen operaatio tai mikä tahansa mieleemme tuleva operaatio. Tärkeintä on, että solmussa on sisäänkäynti ja uloskäynti.

sisäänkäynti - tämä on paikka, jossa solmu vastaanottaa tietoja. Syötekuvat ovat pisteitä, jotka ovat aina solmun vasemmalla puolella.

Ulostulo - tämä on paikka, josta solmun toiminnan tulos noudetaan. Tulostuskuvat ovat pisteitä, jotka sijaitsevat aina solmun oikealla puolella.

Joillakin solmuilla ei ole tuloja. Tällaiset solmut luovat tuloksen sisäisesti. Esimerkiksi vakiosolmu tai anturisolmu: ne eivät tarvitse tietoja muista solmuista raportoidakseen tuloksen.

Muilla solmuilla päinvastoin ei ole lähtöjä. Nämä ovat solmuja, jotka näyttävät esimerkiksi toimilaitteita (releitä tai jotain vastaavaa). Ne hyväksyvät tiedot, mutta eivät luo laskennallista tulosta, joka on muiden solmujen käytettävissä.

Lisäksi siellä on myös ainutlaatuinen kommenttisolmu. Se ei tee mitään, sillä ei ole tuloja tai lähtöjä. Sen tarkoitus on olla selitys kaaviossa.

Mitä on tapahtunut "tapahtuma"? Tapahtuma on uuden tiedon ilmaantuminen missä tahansa solmussa. Tapahtumia ovat esimerkiksi: muutos syöttötilassa (solmu panos), vastaanottaa tietoja toisesta laitteesta (solmut MQTT и UDP), tietyn ajanjakson päättyminen (solmut Ajastin и Viive) ja niin edelleen.

Mitä varten tapahtumat ovat? Kyllä, jotta voidaan määrittää, missä solmussa uutta tietoa on syntynyt ja minkä solmujen tiloja on muutettava uuden tiedon vastaanoton yhteydessä. Tapahtuma ikään kuin "kulkee" solmuketjua pitkin, kunnes se ohittaa kaikki solmut, joiden tila on tarkistettava ja muutettava.

Kaikki solmut voidaan jakaa kahteen luokkaan.
Kutsutaan solmuja, jotka voivat luoda tapahtumia"aktiiviset solmut'.
Kutsumme solmuja, jotka eivät voi luoda tapahtumia "passiiviset solmut'.

Kun solmu generoi tapahtuman (eli sen ulostuloon ilmestyy uutta dataa), niin yleisessä tapauksessa tapahtumageneraattorisolmun lähtöön kytketyn koko solmuketjun tila muuttuu.

Selvittääksesi sen, harkitse kuvan esimerkkiä.

ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

Tässä aktiiviset solmut ovat Input1, Input2 ja Input3. Loput solmut ovat passiivisia. Pohditaan, mitä tapahtuu, kun yksi tai toinen tulo suljetaan. Mukavuuden vuoksi tulokset on koottu taulukkoon.

ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

Kuten näet, tapahtuman tapahtuessa rakennetaan ketju tapahtuman lähdesolmusta loppusolmuun. Niiden solmujen tila, jotka eivät kuulu ketjuun, ei muutu.

Herää oikeutettu kysymys: mitä tapahtuu, jos kaksi tai jopa useampi tapahtuma tapahtuu samanaikaisesti?

Gleb Anfilovin työn ystävänä minulla on houkutus lähettää utelias kysyjä hänen kirjaansa "Pako yllätyksestä". Tämä on "pienten suhteellisuusteoria", joka selittää hyvin, mitä "samanaikainen" tarkoittaa ja miten sen kanssa elää.

Mutta käytännössä kaikki on paljon yksinkertaisempaa: kun tapahtuu kaksi tai jopa useampi tapahtuma, kaikki ketjut kustakin tapahtumalähteestä rakennetaan ja prosessoidaan peräkkäin, eikä ihmeitä tapahdu.

Seuraava täysin oikeutettu kysymys uteliaalta lukijalta on, mitä tapahtuu, jos solmut yhdistetään renkaaksi? Tai, kuten näiden älykkäiden miestesi keskuudessa sanotaan, esitä palautetta. Eli kytke yhden solmun lähtö edellisen solmun tuloon niin, että tämän solmun lähtötila vaikuttaa sen tulon tilaan. Editori ei salli sinun liittää suoraan solmun lähtöä sen tuloon. ElDraw. Mutta epäsuorasti, kuten alla olevassa kuvassa, tämä voidaan tehdä.

Mitä tässä tapauksessa sitten tapahtuu? Vastaus on hyvin "varma": riippuen siitä, mitkä solmut. Katsotaanpa esimerkkiä kuvasta.

ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

Kun Input1:n tulokoskettimet ovat auki, solmun A ylempi tulo on 0. Solmun A lähtö on myös 0. Solmun B lähtö on 1. Ja lopuksi solmun A alempi tulo on 1. Kaikki on asia selvä. Ja niille, joille ei ole selvää, katso alta kuvaus "AND"- ja "NOT"-solmujen toiminnasta.

Nyt suljemme Input1-tulon kontaktit, eli asetamme yhden solmun A ylempään tuloon. Elektroniikkaan perehtyneet tietävät, että itse asiassa saamme klassisen generaattoripiirin logiikkaelementeillä. Ja teoriassa sellaisen piirin pitäisi tuottaa loputtomasti sekvenssi 1-0-1-0-1-0… elementtien A ja B lähdössä. ja 0-1-0-1-0-1-…. Loppujen lopuksi tapahtuman täytyy jatkuvasti muuttaa solmujen A ja B tilaa, jotka kulkevat ympyrässä 2-3-2-3-...!

Mutta todellisuudessa näin ei tapahdu. Piiri menee satunnaiseen tilaan - tai rele pysyy päällä tai pois päältä, tai ehkä hieman surina päälle ja pois useita kertoja peräkkäin. Kaikki riippuu Marsin etelänavan säästä. Ja siksi tämä tapahtuu.

Tapahtuma solmusta Input1 muuttaa solmun A tilaa, sitten solmun B ja niin edelleen ympyrässä useita kertoja. Ohjelma havaitsee tapahtuman "silmukan" ja pysäyttää tämän karnevaalin väkisin. Tämän jälkeen solmujen A ja B tilan muutokset estetään, kunnes uusi tapahtuma tapahtuu. Hetki, jolloin ohjelma päättää "lopeta pyöriminen ympyröissä!" - Yleensä se riippuu monista tekijöistä ja sitä voidaan pitää satunnaisena.

Ole varovainen yhdistäessäsi solmuja renkaaksi - vaikutukset eivät aina ole ilmeisiä! Sinulla on hyvä käsitys siitä, mitä ja miksi teet!

Onko vielä mahdollista rakentaa generaattori käytettävissämme oleville solmuille? Kyllä sinä voit! Mutta tämä vaatii solmun, joka voi luoda tapahtumia itse. Ja siellä on sellainen solmu - tämä on "viivelinja". Katsotaanpa, kuinka generaattori, jonka jakso on 6 sekuntia, toimii alla olevassa kuvassa.

ShioTiny: solmut, yhteydet ja tapahtumat tai piirustusohjelmien ominaisuudet

Generaattorin avainelementti on solmu A - viivelinja. Jos muutat viivelinjan tulotilaa 0:sta 1:ksi, 1 ei näy lähdössä heti, vaan vasta tietyn ajan kuluttua. Meidän tapauksessamme se on 3 sekuntia. Samalla tavalla, jos muutat viivelinjan tulotilan 1:stä 0:ksi, niin lähdön 0 ilmestyy saman 3 sekunnin kuluttua. Viiveaika asetetaan sekunnin kymmenesosissa. Eli arvo 30 tarkoittaa 3 sekuntia.

Viivelinjan erityispiirre on, että se luo tapahtuman viiveajan umpeuduttua.

Oletetaan, että alun perin viivelinjan lähtö oli 0. Solmun B - invertterin - ohituksen jälkeen tämä 0 muuttuu 1:ksi ja menee viivelinjan tuloon. Mitään ei tapahdu heti. Viivelinjan lähdössä se pysyy 0:na, mutta viiveajan laskenta alkaa. 3 sekuntia kuluu. Ja sitten viiveviiva luo tapahtuman. Sen lähdössä se näyttää 1. Tämä yksikkö, ohitettuaan solmun B - invertterin - muuttuu 0:ksi ja siirtyy viivelinjan tuloon. Kuluu vielä 3 sekuntia... ja prosessi toistuu. Eli 3 sekunnin välein viivelinjan lähdön tila muuttuu 0:sta 1:een ja sitten 1:stä 0:aan. Rele napsahtaa. Generaattori toimii. Pulssijakso on 6 sekuntia (3 sekuntia lähdössä nolla ja 3 sekuntia lähdössä yksi).

Mutta todellisissa piireissä ei yleensä ole tarvetta käyttää tätä esimerkkiä. On olemassa erityisiä ajastinsolmuja, jotka täydellisesti ja ilman ulkopuolista apua luovat pulssisarjan tietyllä jaksolla. "nollan" ja "yksi" kesto näissä pulsseissa on yhtä suuri kuin puolet jaksosta.

Käytä ajastinsolmuja asettaaksesi säännöllisiä toimintoja.

Huomautan, että sellaisia ​​digitaalisia signaaleja, joissa "nollan" ja "yksi" kesto on yhtä suuri, kutsutaan "meanderiksi".

Toivon, että olen selventänyt kysymystä hieman siitä, kuinka tapahtumat leviävät solmujen välillä ja mitä ei pidä tehdä?

Johtopäätös ja viittaukset

Artikkeli osoittautui lyhyeksi, mutta tämä artikkeli on vastaus kysymyksiin, joita on herännyt solmuista ja tapahtumista.

Kun laiteohjelmisto kehittyy ja uusia esimerkkejä ilmaantuu, kirjoitan ohjelmoinnista ShioTiny pieniä artikkeleita niin kauan kuin se kiinnostaa ihmisiä.

Kuten ennenkin, kaavio, laiteohjelmisto, esimerkit, komponenttien kuvaus ja kaikki loput on täällä.

Kysymyksiä, ehdotuksia, kritiikkiä - mene tänne: [sähköposti suojattu]

Lähde: will.com

Lisää kommentti