ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

Haaptpunkte oder iwwer wat dësen Artikel ass

D'Thema vum Artikel ass visuell PLC Programméierung Schéin fir dat intelligent Heem dat hei beschriwwe gëtt: ShIoTiny: kleng Automatisatioun, Internet vun de Saachen oder "sechs Méint virun der Vakanz".

Ganz kuerz Konzepter wéi z Kniet, Kommunikatioun, Evenementer, souwéi Features fir e visuelle Programm ze lueden an auszeféieren op ESP8266, wat d'Basis vun der PLC ass Schéin.

Aféierung oder e puer organisatoresch Froen

Am viregten Artikel iwwer meng Entwécklung hunn ech e kuerzen Iwwerbléck iwwer d'Fähigkeiten vum Controller ginn Schéin.

Komesch genuch huet de Public zimmlech staarken Interessi gewisen a mir ganz vill Froen gestallt. E puer Frënn hu souguer direkt ugebueden e Controller vu mir ze kafen. Neen, ech sinn net géint e bëssen Suen ze verdéngen, mee mäi Gewëssen erlaabt mir net eppes ze verkafen, wat nach ëmmer ganz grob ass a Saache Software.

Dofir hunn ech d'Firmware Binären an d'Apparatdiagramm op GitHub gepost: Firmware + kuerzsten Uweisungen + Diagramm + Beispiller.

Elo kann jiddereen den ESP-07 flashen a selwer mat der Firmware spillen. Wann iergendeen wierklech genee dee selwechte Bord wëll wéi op der Foto, dann hunn ech e puer vun hinnen. Schreift per E-Mail [Email geschützt]. Awer, wéi den onvergiesslechen Ogurtsov gesot huet: "Ech sinn net verantwortlech fir näischt!"

Also, loosst eis zum Punkt kommen: wat ass "Kniet" (Node) an "Manifestatioun"? Wéi gëtt de Programm ausgefouert?

Loosst eis wéi gewinnt an Uerdnung ufänken: andeems Dir de Programm eroflueden.

Wéi de Programm gelueden ass

Loosst eis ufänken mat deem wat geschitt wa mir e Knäppchen drécken Eroplueden am Redakter ElDraw an eise Circuit-Programm, besteet aus schéine Quadraten, flitt an den Apparat.

Als éischt, baséiert op dem Diagramm, dee mir gezeechent hunn, ass seng Beschreiwung an Textform gebaut.
Zweetens, kontrolléiert et ob all Node-Input mat Ausgänge verbonne sinn. Et sollt keng "hänkend" Entréeën sinn. Wann esou en Input festgestallt gëtt, gëtt de Circuit net an ShIoTiny gelueden, an den Editeur weist eng entspriechend Warnung.

Wann alles gutt gaang ass, schéckt de Redakter eng Textbeschreiwung vum Circuit een Node gläichzäiteg un ShIoTiny. Natierlech gëtt déi bestehend Circuit vu ShIoTiny fir d'éischt geläscht. Déi resultéierend Textbeschreiwung gëtt am FLASH Memory gespäichert.

Iwwregens, wann Dir e Circuit vun engem Apparat ewechhuele wëllt, da lued einfach en eidel Circuit an et (net mat engem eenzegen Node-Element).

Wann de ganze Circuitprogramm an de ShIoTiny PLC gelueden ass, fänkt et un "ausféieren". Wat heescht dat?

Bedenkt datt d'Prozesser fir e Circuit aus FLASH Erënnerung ze lueden wann d'Kraaft ageschalt ass a wann Dir e Circuit vum Editor kritt, identesch sinn.

Als éischt ginn Nodeobjekter op Basis vun hirer Beschreiwung erstallt.
Da ginn Verbindungen tëscht Noden gemaach. Dat ass, Linke vun Ausgänge fir Inputen an Inputen op Ausgänge ginn generéiert.

An nëmmen no all dat fänkt den Haaptprogramm Ausféierungszyklus un.

Ech hunn eng laang Zäit geschriwwen, awer de ganze Prozess - vum "Lueden" vum Circuit aus der FLASH-Erënnerung bis zum Start vum Haaptzyklus - dauert eng Fraktioun vun enger Sekonn fir e Circuit vun 60-80 Noden.

Wéi funktionnéiert d'Haaptschleife? Ganz einfach. Als éischt waart hien op d'Entstoe Evenementer op engem Node, veraarbecht dann dat Event. An esou weider onendlech. Gutt, oder bis se en neie Schema op ShIoTiny eropluede.

E puer Mol schonn hunn ech Saachen ernimmt wéi Evenementer, Kniet и Kommunikatioun. Awer wat ass dat aus enger Software Siicht? Mir wäerten haut doriwwer schwätzen.

Noden, Verbindungen an Evenementer

kucken Just op d'Beispiller vun Circuit Programmer fir Schéinze verstoen datt d'Diagramm nëmmen aus zwee Entitéite besteet - Noden (oder Elementer) an d'Verbindungen tëscht hinnen.

Knot, awer jo oder Circuit Element ass eng virtuell Representatioun vun e puer Aktiounen iwwer d'Donnéeën. Dëst kann eng arithmetesch Operatioun sinn, eng logesch Operatioun, oder all Operatioun déi an eisem Kapp kënnt. Den Haapt Saach ass datt den Node eng Entrée an eng Sortie huet.

Element - dat ass d'Plaz wou den Node Daten kritt. D'Input Biller sinn Punkten déi ëmmer op der lénker Säit vum Node sinn.

Exit - Dëst ass d'Plaz wou d'Resultat vun der Operatioun vum Node erëmfonnt gëtt. D'Ausgangsbiller si Punkten déi ëmmer op der rietser Säit vum Node sinn.

E puer Noden hunn keng Inputen. Esou Noden generéieren d'Resultat intern. Zum Beispill, e konstante Node oder e Sensor Node: si brauche keng Daten vun aneren Noden fir d'Resultat ze berichten.

Aner Noden, am Géigendeel, hu keng Ausgänge. Dëst sinn Wirbelen, déi zum Beispill Aktuatoren (Relais oder eppes ähnleches) weisen. Si akzeptéieren Daten awer generéieren net e computational Resultat dat fir aner Noden verfügbar ass.

Zousätzlech gëtt et och en eenzegaartege Kommentarnode. Et mécht näischt, huet keng Inputen oder Ausgänge. Säin Zweck ass eng Erklärung am Diagramm ze sinn.

Wat ass geschitt "Manifestatioun"? Manifestatioun ass d'Entstoe vun neien Donnéeën an all Node. Zum Beispill, Eventer enthalen: Ännerung vum Inputzoustand (Node Input), Daten vun engem aneren Apparat (Noden MQTT и UDP), Oflaf vun enger spezifizéierter Zäitperiod (Noden Timer и Verzögerung) a sou weider.

Wat sinn Evenementer fir? Jo, fir ze bestëmmen a wéi engem Node nei Daten entstane sinn an d'Staaten vun deenen Noden am Zesummenhang mat der Empfang vun neien Donnéeën geännert ginn. D'Evenement, wéi et war, "passt" laanscht d'Kette vun de Wirbelen, bis et all Wirbelen ëmgeet, deenen hiren Zoustand muss iwwerpréift a geännert ginn.

All Node kënnen an zwou Kategorien opgedeelt ginn.
Loosst eis Noden uruffen déi Eventer generéiere kënnen "aktiv Wirbelen".
Mir ruffen Noden déi Eventer net kënnen generéieren "passiv Wirbelen".

Wann e Node en Event generéiert (dat heescht, nei Donnéeën erschéngen op senger Ausgab), dann am allgemenge Fall ännert den Zoustand vun der ganzer Kette vun Node verbonne mat der Ausgab vum Event Generator Node.

Fir et kloer ze maachen, betruecht d'Beispill an der Figur.

ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

Déi aktiv Wirbelen hei sinn Input1, Input2 an Input3. Déi reschtlech Node si passiv. Loosst eis kucken wat geschitt wann een oder aneren Input zou ass. Fir d'Bequemlechkeet sinn d'Resultater an enger Tabell zesummegefaasst.

ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

Wéi Dir gesitt, wann en Event geschitt ass, gëtt eng Kette vum Quellknuet vum Event bis zum Enn Node gebaut. Den Zoustand vun deenen Noden déi net an d'Kette falen ännert sech net.

Eng legitim Fro stellt sech: Wat geschitt wann zwee oder souguer e puer Eventer gläichzäiteg geschéien?

Als Liebhaber vun der Aarbecht vum Gleb Anfilov, sinn ech versicht e virwëtzeg Ufro un säi Buch "Escape from Surprise" ze schécken. Dëst ass eng "Relativitéitstheorie fir déi Kleng", déi gutt erklärt wat "Simultan" heescht a wéi een domat liewen.

Awer praktesch alles ass vill méi einfach: wann zwee oder souguer e puer Eventer optrieden, ginn all Ketten vun all Eventquell sequenziell gebaut a veraarbecht, a keng Wonner geschéien.

Déi nächst komplett legitim Fro vun engem virwëtzeg Lieser ass wat geschitt wann d'Knuet an e Rank verbonne sinn? Oder, wéi se soen ënnert dësen Smart Kärelen vun Iech, aféieren Feedback. Dat ass, verbënnt den Ausgang vun engem vun den Node mam Input vum fréiere Node sou datt den Ausgangszoustand vun dësem Node den Zoustand vu sengem Input beaflosst. Den Editeur erlaabt Iech net direkt den Output vun engem Node mat sengem Input ze verbannen. ElDraw. Awer indirekt, wéi an der Figur hei drënner, kann dat gemaach ginn.

Also wat wäert an dësem Fall geschéien? D'Äntwert wäert ganz "definitiv" sinn: jee no wéi eng Noden. Loosst eis d'Beispill an der Figur kucken.

ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

Wann d'Input Kontakter vun Input1 op sinn, ass den ieweschten Input vum Node A 0. Den Output vum Node A ass och 0. Den Output vum Node B ass 1. An, schlussendlech, den ënneschten Input vum Node A ass 1. Alles ass kloer. A fir déi, déi net kloer sinn, kuckt hei ënnen fir eng Beschreiwung wéi d'"AN" an "NET" Noden funktionnéieren.

Elo zoumaachen mir d'Kontakter vum Input1 Input, dat heescht, mir gëllen een op den ieweschten Input vum Node A. Déi, déi mat Elektronik vertraut sinn, wëssen datt mir tatsächlech e klassesche Generatorkrees mat Logikelementer kréien. An an der Theorie soll esou e Circuit endlos d'Sequenz 1-0-1-0-1-0 produzéieren ... beim Ausgang vun Elementer A a B. an 0-1-0-1-0-1-…. No all, muss d'Evenement permanent den Zoustand vun Wirbelen A a B änneren, an engem Krees 2-3-2-3-... lafen!

Awer a Wierklechkeet geschitt dat net. De Circuit fällt an e zoufällegem Zoustand - oder de Relais bleift un oder aus, oder vläicht e puer Mol hannereneen e bësse Buzz op an aus. Alles hänkt vum Wieder um Südpol vum Mars of. An dofir geschitt dat.

En Event vum Node Input1 ännert den Zoustand vum Node A, dann Node B, a sou weider an engem Krees e puer Mol. De Programm erkennt de "Looping" vum Event a stoppt dës Karneval gezwongen. Duerno ginn d'Ännerungen am Zoustand vun den Noden A a B blockéiert bis en neit Event geschitt. De Moment wou de Programm decidéiert "stoppt a Kreeser ze dréinen!" - am Allgemengen, hänkt et op ville Faktoren a kann zoufälleg considéréiert ginn.

Sidd virsiichteg wann Dir Knuet an e Rank verbënnt - d'Effekter wäerten net ëmmer offensichtlech sinn! Hutt eng gutt Iddi vu wat a firwat Dir maacht!

Ass et nach méiglech e Generator op den Noden ze bauen, déi eis verfügbar sinn? Jo du kanns! Awer dëst erfuerdert en Node deen Eventer selwer generéiere kann. An et gëtt esou e Node - dat ass d'"Verzögerungslinn". Loosst eis kucken wéi e Generator mat enger Period vu 6 Sekonnen an der Figur hei drënner funktionnéiert.

ShIoTiny: Knäppercher, Verbindungen an Eventer oder Features vun Zeecheprogrammer

De Schlësselelement vum Generator ass Node A - d'Verzögerungslinn. Wann Dir den Inputzoustand vun der Verzögerungslinn vun 0 op 1 ännert, da erschéngt 1 net direkt beim Ausgang, awer nëmmen no enger spezifizéierter Zäit. An eisem Fall ass et 3 Sekonnen. Am selwechte Wee, wann Dir den Inputzoustand vun der Verzögerungslinn vun 1 op 0 ännert, da erschéngt 0 am Ausgang no der selwechter 3 Sekonnen. D'Verzögerungszäit gëtt an Zéngtel vun enger Sekonn festgeluecht. Dat ass, de Wäert 30 heescht 3 Sekonnen.

Eng speziell Feature vun der Verzögerungslinn ass datt et en Event generéiert nodeems d'Verspéidungszäit ofgelaf ass.

Loosst eis unhuelen datt am Ufank den Ausgang vun der Verzögerungslinn 0 war. Nodeem de Node B passéiert - den Inverter - gëtt dës 0 an 1 a geet op den Input vun der Verzögerungslinn. Näischt geschitt direkt. Beim Ausgang vun der Verzögerungslinn bleift et 0, awer de Countdown vun der Verzögerungszäit fänkt un. 3 Sekonnen passéieren. An dann generéiert d'Verzögerungslinn en Event. Op senger Ausgab erschéngt 1. Dës Eenheet, nodeem de Node B passéiert - den Inverter - gëtt an 0 a geet op den Input vun der Verzögerungslinn. Nach 3 Sekonnen passéieren ... an de Prozess widderhëlt sech. Dat heescht, all 3 Sekonnen ännert den Zoustand vun der Verzögerungslinnausgang vun 0 op 1 an dann vun 1 op 0. De Relais klickt. De Generator funktionnéiert. D'Pulszäit ass 6 Sekonnen (3 Sekonnen um Ausgang Null an 3 Sekonnen um Ausgang XNUMX).

Awer an echte Circuiten ass et normalerweis net néideg dëst Beispill ze benotzen. Et gi speziell Timer Wirbelen déi perfekt an ouni ausserhalb Hëllef eng Sequenz vun Impulser mat enger bestëmmter Period generéieren. D'Dauer vun "Null" an "Een" an dësen Impulser ass d'Halschent vun der Period gläich.

Fir periodesch Aktiounen ze setzen, benotzt Timerknoten.

Ech bemierken datt sou digital Signaler, wou d'Dauer vun "Null" an "Een" gläich sinn, "Meander" genannt ginn.

Ech hoffen ech hunn d'Fro e bëssen gekläert wéi d'Evenementer tëscht Wirbelen propagéiert ginn a wat net ze maachen?

Conclusioun a Referenze

Den Artikel huet sech kuerz erausgestallt, awer dësen Artikel ass eng Äntwert op Froen, déi iwwer Noden an Eventer opgetruede sinn.

Wéi d'Firmware entwéckelt an nei Beispiller erschéngen, wäert ech schreiwen wéi Dir programméiert Schéin kleng Artikelen soulaang et fir d'Leit interessant wäert sinn.

Wéi virdrun, Diagramm, Firmware, Beispiller, Beschreiwung vun Komponenten an alles de Rescht ass hei.

Froen, Virschléi, Kritik - gitt hei: [Email geschützt]

Source: will.com

Setzt e Commentaire