Galvenie punkti jeb par ko ir Ŕis raksts
Raksta tÄma ir vizuÄlÄ PLC programmÄÅ”ana ShioTiny Å”eit aprakstÄ«tajai viedajai mÄjai:
Ä»oti Ä«si tÄdi jÄdzieni kÄ mezgli, saites, attÄ«stÄ«ba, kÄ arÄ« vizuÄlÄs programmas ielÄdes un izpildes funkcijas ESP8266, kas ir PLC pamatÄ ShioTiny.
Ievads vai pÄris organizatoriski jautÄjumi
IepriekÅ”ÄjÄ rakstÄ par savu attÄ«stÄ«bu es sniedzu Ä«su pÄrskatu par kontroliera iespÄjÄm ShioTiny.
SavÄdi, bet sabiedrÄ«ba izrÄdÄ«ja diezgan lielu interesi un uzdeva man diezgan daudz jautÄjumu. Daži draugi pat uzreiz piedÄvÄja no manis nopirkt kontrolieri. NÄ, es neesmu pret nelielas naudas pelnÄ«Å”anu, taÄu mana sirdsapziÅa neļauj man pÄrdot kaut ko, kas programmatÅ«ras ziÅÄ joprojÄm ir ļoti rupjÅ”.
TÄpÄc es ievietoju programmaparatÅ«ras binÄros failus un ierÄ«ces diagrammu GitHub:
Tagad ikviens var mirgot ESP-07 un pats spÄlÄt ar programmaparatÅ«ru. Ja kÄds ļoti vÄlas tieÅ”i tÄdu dÄli kÄ bildÄ, tad man ir vairÄki. Rakstiet pa e-pastu [e-pasts aizsargÄts]. Bet, kÄ mÄdza teikt neaizmirstamais Ogurcovs: "Es ne par ko neatbildu!"
TÄtad, Ä·ersimies pie lietas: kas ir "mezgls" (mezgls) un "notikumu"? KÄ programma tiek izpildÄ«ta?
KÄ parasti, sÄksim secÄ«bÄ: lejupielÄdÄjot programmu.
KÄ programma tiek ielÄdÄta
SÄksim ar to, kas notiek, nospiežot pogu Upload redaktorÄ ElDraw un mÅ«su Ä·Ädes programma, kas sastÄv no skaistiem kvadrÄtiem, ielido ierÄ«cÄ.
PirmkÄrt, pamatojoties uz mÅ«su uzzÄ«mÄto diagrammu, tiek izveidots tÄs apraksts teksta formÄ.
OtrkÄrt, tÄ pÄrbauda, āāvai visas mezgla ieejas ir savienotas ar izejÄm. NedrÄ«kst bÅ«t āpiekÄrtÄmā ieejÄm. Ja tiek atklÄta Å”Äda ievade, shÄma netiks ielÄdÄta programmÄ ShioTiny, un redaktors parÄdÄ«s atbilstoÅ”u brÄ«dinÄjumu.
Ja viss noritÄja labi, redaktors uz ShioTiny nosÅ«ta Ä·Ädes teksta aprakstu pa vienam mezglam. Protams, vispirms tiek noÅemta esoÅ”Ä shIoTiny shÄma. IegÅ«tais teksta apraksts tiek saglabÄts FLASH atmiÅÄ.
Starp citu, ja vÄlaties noÅemt Ä·Ädi no ierÄ«ces, vienkÄrÅ”i ievietojiet tajÄ tukÅ”u Ä·Ädi (kurÄ nav neviena mezgla elementa).
Kad visa shÄmas programma ir ielÄdÄta shIoTiny PLC, tÄ sÄk āizpildÄ«tā. Ko tas nozÄ«mÄ?
Å emiet vÄrÄ, ka Ä·Ädes ielÄdes procesi no FLASH atmiÅas, kad ir ieslÄgta baroÅ”ana, un saÅemot Ä·Ädi no redaktora, ir identiski.
PirmkÄrt, mezglu objekti tiek izveidoti, pamatojoties uz to aprakstu.
PÄc tam tiek izveidoti savienojumi starp mezgliem. Tas nozÄ«mÄ, ka tiek Ä£enerÄtas izeju saites ar ieejÄm un ievades uz izejÄm.
Un tikai pÄc visa Ŕī sÄkas galvenais programmas izpildes cikls.
Es rakstÄ«ju ilgu laiku, bet viss process - no Ä·Ädes āielÄdÄÅ”anasā no FLASH atmiÅas lÄ«dz galvenÄ cikla palaiÅ”anai - aizÅem sekundes daļu 60ā80 mezglu Ä·Ädei.
KÄ darbojas galvenÄ cilpa? Ä»oti vienkÄrÅ”i. Vispirms viÅÅ” gaida parÄdÄ«Å”anos attÄ«stÄ«ba kÄdÄ mezglÄ, pÄc tam apstrÄdÄ Å”o notikumu. Un tÄ bezgalÄ«gi. Nu, vai lÄ«dz brÄ«dim, kad viÅi augÅ”upielÄdÄ jaunu shÄmu shIoTiny.
Jau vairÄkas reizes esmu minÄjis tÄdas lietas kÄ attÄ«stÄ«ba, mezgli Šø saites. Bet kas tas ir no programmatÅ«ras viedokļa? MÄs par to runÄsim Å”odien.
Mezgli, savienojumi un notikumi
VienkÄrÅ”i apskatiet shÄmas programmu piemÄrus ShioTinysaprast, ka diagramma sastÄv tikai no divÄm entÄ«tijÄm - mezgliem (vai elementiem) un savienojumiem starp tiem.
Mezgls, bet jÄ vai Ä·Ädes elements ir dažu virtuÄls attÄlojums aktivitÄte pÄr datiem. TÄ var bÅ«t aritmÄtiska darbÄ«ba, loÄ£iska darbÄ«ba vai jebkura darbÄ«ba, kas mums ienÄk prÄtÄ. Galvenais, lai mezglam bÅ«tu ieeja un izeja.
Ievade - Ŕī ir vieta, kur mezgls saÅem datus. Ievades attÄli ir punkti, kas vienmÄr atrodas mezgla kreisajÄ pusÄ.
Izvade - Ŕī ir vieta, kur tiek izgÅ«ts mezgla darbÄ«bas rezultÄts. Izvades attÄli ir punkti, kas vienmÄr atrodas mezgla labajÄ pusÄ.
Dažiem mezgliem nav ieejas. Å Ädi mezgli Ä£enerÄ rezultÄtu iekÅ”Äji. PiemÄram, pastÄvÄ«gs mezgls vai sensora mezgls: tiem nav nepiecieÅ”ami dati no citiem mezgliem, lai ziÅotu par rezultÄtu.
Gluži pretÄji, citiem mezgliem nav izejas. Tie ir mezgli, kas parÄda, piemÄram, izpildmehÄnismus (relejus vai kaut ko lÄ«dzÄ«gu). Tie pieÅem datus, bet neÄ£enerÄ skaitļoÅ”anas rezultÄtu, kas ir pieejams citiem mezgliem.
TurklÄt ir arÄ« unikÄls komentÄru mezgls. Tas neko nedara, tam nav ieejas vai izejas. TÄs mÄrÄ·is ir bÅ«t par paskaidrojumu diagrammÄ.
Kas notika "notikumu"? Notikums ir jaunu datu parÄdÄ«Å”anÄs jebkurÄ mezglÄ. PiemÄram, notikumi ietver: izmaiÅas ievades stÄvoklÄ« (mezgls ievade), saÅemot datus no citas ierÄ«ces (mezgliem MQTT Šø UDP), noteikta laika perioda beigas (mezgli Taimeris Šø KavÄÅ”anÄs) un tÄ tÄlÄk.
Kam paredzÄti pasÄkumi? JÄ, lai noteiktu, kurÄ mezglÄ ir raduÅ”ies jauni dati un kuru mezglu stÄvokļi ir jÄmaina saistÄ«bÄ ar jaunu datu saÅemÅ”anu. Notikums it kÄ āiet garÄmā pa mezglu Ä·Ädi, lÄ«dz tas apiet visus mezglus, kuru stÄvoklis ir jÄpÄrbauda un jÄmaina.
Visus mezglus var iedalÄ«t divÄs kategorijÄs.
Sauksim mezglus, kas var Ä£enerÄt notikumus "aktÄ«vie mezgli'.
MÄs izsauksim mezglus, kas nevar Ä£enerÄt notikumus "pasÄ«vie mezgli'.
Kad mezgls Ä£enerÄ notikumu (tas ir, tÄ izvadÄ parÄdÄs jauni dati), tad vispÄrÄ«gÄ gadÄ«jumÄ mainÄs visas ar notikumu Ä£eneratora mezgla izvadi savienoto mezglu Ä·Ädes stÄvoklis.
Lai tas bÅ«tu skaidrs, apsveriet piemÄru attÄlÄ.
Å eit aktÄ«vie mezgli ir Input1, Input2 un Input3. AtlikuÅ”ie mezgli ir pasÄ«vi. ApsvÄrsim, kas notiek, kad viena vai otra ievade tiek aizvÄrta. ÄrtÄ«bas labad rezultÄti ir apkopoti tabulÄ.
KÄ redzat, kad notiek notikums, tiek veidota Ä·Äde no notikuma avota mezgla lÄ«dz gala mezglam. To mezglu stÄvoklis, kas neietilpst Ä·ÄdÄ, nemainÄs.
Rodas pamatots jautÄjums: kas notiks, ja vienlaicÄ«gi notiks divi vai pat vairÄki notikumi?
KÄ Gļeba Anfilova darbu cienÄ«tÄjs man ir kÄrdinÄjums nosÅ«tÄ«t ziÅkÄrÄ«gu jautÄtÄju uz viÅa grÄmatu āBÄgÅ”ana no pÄrsteigumaā. Å Ä« ir ārelativitÄtes teorija mazajiemā, kas labi izskaidro, ko nozÄ«mÄ āvienlaikusā un kÄ ar to sadzÄ«vot.
Bet praktiski viss ir daudz vienkÄrÅ”Äk: kad notiek divi vai pat vairÄki notikumi, visas Ä·Ädes no katra notikumu avota tiek secÄ«gi veidotas un apstrÄdÄtas pÄc kÄrtas, un nekÄdi brÄ«numi nenotiek.
NÄkamais pilnÄ«gi likumÄ«gais ziÅkÄrÄ«ga lasÄ«tÄja jautÄjums ir, kas notiks, ja mezgli tiks savienoti gredzenÄ? Vai arÄ«, kÄ saka starp Å”iem jÅ«su gudrajiem puiÅ”iem, ievadiet atsauksmes. Tas ir, savienojiet viena mezgla izvadi ar iepriekÅ”ÄjÄ mezgla ieeju, lai Ŕī mezgla izejas stÄvoklis ietekmÄtu tÄ ievades stÄvokli. Redaktors neļaus tieÅ”i savienot mezgla izvadi ar tÄ ieeju. ElDraw. Bet netieÅ”i, kÄ attÄlÄ zemÄk, to var izdarÄ«t.
TÄtad, kas notiks Å”ajÄ gadÄ«jumÄ? Atbilde bÅ«s ļoti ānoteiktaā: atkarÄ«bÄ no tÄ, kuri mezgli. ApskatÄ«sim piemÄru attÄlÄ.
Kad Input1 ieejas kontakti ir atvÄrti, mezgla A augÅ”ÄjÄ ieeja ir 0. Mezgla A izeja arÄ« ir 0. Mezgla B izeja ir 1. Un, visbeidzot, mezgla A apakÅ”ÄjÄ ieeja ir 1. Viss ir skaidrs. Un tiem, kam nav skaidrÄ«bas, skatiet tÄlÄk aprakstu par to, kÄ darbojas mezgli āUNā un āNOTā.
Tagad mÄs aizveram Input1 ievades kontaktus, tas ir, vienu pievienojam mezgla A augÅ”Äjai ieejai. Tie, kas pÄrzina elektroniku, zina, ka patiesÄ«bÄ mÄs iegÅ«sim klasisku Ä£eneratora shÄmu, izmantojot loÄ£iskos elementus. Un teorÄtiski Å”Ädai Ä·Ädei bezgalÄ«gi jÄrada secÄ«ba 1-0-1-0-1-0ā¦ elementu A un B izejÄ. un 0-1-0-1-0-1-ā¦. Galu galÄ notikumam pastÄvÄ«gi jÄmaina mezglu A un B stÄvoklis, skrienot pa apli 2-3-2-3-...!
Bet patiesÄ«bÄ tas nenotiek. ĶÄde nonÄks nejauÅ”Ä stÄvoklÄ« - vai arÄ« relejs paliks ieslÄgts vai izslÄgts, vai varbÅ«t nedaudz ieslÄgsies un izslÄgsies vairÄkas reizes pÄc kÄrtas. Tas viss ir atkarÄ«gs no laika apstÄkļiem Marsa dienvidu polÄ. Un tÄpÄc tas notiek.
Notikums no mezgla Input1 maina mezgla A stÄvokli, pÄc tam mezglu B un tÄ tÄlÄk vairÄkas reizes pa apli. Programma nosaka notikuma ācilpuā un piespiedu kÄrtÄ aptur Å”o karnevÄlu. PÄc tam mezglu A un B stÄvokļa izmaiÅas tiek bloÄ·Ätas, lÄ«dz notiek jauns notikums. BrÄ«dis, kad programma nolemj āpÄrstÄj griezties riÅÄ·os!ā - kopumÄ tas ir atkarÄ«gs no daudziem faktoriem un to var uzskatÄ«t par nejauÅ”u.
Esiet piesardzÄ«gs, savienojot mezglus gredzenÄ - sekas ne vienmÄr bÅ«s acÄ«mredzamas! Ir laba ideja par to, ko un kÄpÄc jÅ«s darÄt!
Vai joprojÄm ir iespÄjams izveidot Ä£eneratoru uz mums pieejamajiem mezgliem? JÄ tu vari! Bet tam ir nepiecieÅ”ams mezgls, kas pats var Ä£enerÄt notikumus. Un ir Å”Äds mezgls - Ŕī ir āaizkavÄÅ”anÄs lÄ«nijaā. ApskatÄ«sim, kÄ darbojas Ä£enerators ar 6 sekunžu periodu zemÄk esoÅ”ajÄ attÄlÄ.
Galvenais Ä£eneratora elements ir mezgls A - aizkaves lÄ«nija. Ja mainÄt aizkaves lÄ«nijas ievades stÄvokli no 0 uz 1, tad 1 izejÄ neparÄdÄ«sies uzreiz, bet tikai pÄc noteikta laika. MÅ«su gadÄ«jumÄ tas ir 3 sekundes. TÄdÄ paÅ”Ä veidÄ, ja mainÄt aizkaves lÄ«nijas ievades stÄvokli no 1 uz 0, tad 0 izejÄ parÄdÄ«sies pÄc tÄm paÅ”Äm 3 sekundÄm. Aizkaves laiks ir iestatÄ«ts sekundes desmitdaļÄs. Tas nozÄ«mÄ, ka vÄrtÄ«ba 30 nozÄ«mÄ 3 sekundes.
Aizkaves lÄ«nijas Ä«patnÄ«ba ir tÄda, ka tÄ Ä£enerÄ notikumu pÄc aizkaves laika beigÄm.
PieÅemsim, ka sÄkotnÄji aizkaves lÄ«nijas izeja bija 0. PÄc mezgla B ā invertora ā Å”is 0 pÄrvÄrÅ”as par 1 un nonÄk aizkaves lÄ«nijas ieejÄ. Nekas nenotiek uzreiz. Aizkaves lÄ«nijas izejÄ tas paliks 0, bet sÄksies aizkaves laika atpakaļskaitÄ«Å”ana. Paiet 3 sekundes. Un tad aizkaves lÄ«nija Ä£enerÄ notikumu. Pie tÄ izejas parÄdÄs 1. Å Ä« vienÄ«ba, izejot cauri mezglam B - invertoru - pÄrvÄrÅ”as par 0 un pÄriet uz aizkaves lÄ«nijas ieeju. Paiet vÄl 3 sekundes... un process atkÄrtojas. Tas nozÄ«mÄ, ka ik pÄc 3 sekundÄm aizkaves lÄ«nijas izejas stÄvoklis mainÄs no 0 uz 1 un pÄc tam no 1 uz 0. Relejs noklikŔķina. Ä¢enerators strÄdÄ. Impulsa periods ir 6 sekundes (3 sekundes pie izejas nulles un 3 sekundes pie izejas viens).
Bet reÄlÄs shÄmÄs parasti nav nepiecieÅ”ams izmantot Å”o piemÄru. Ir Ä«paÅ”i taimera mezgli, kas lieliski un bez ÄrÄjas palÄ«dzÄ«bas Ä£enerÄ impulsu secÄ«bu ar noteiktu periodu. āNullesā un āvienaā ilgums Å”ajos impulsos ir vienÄds ar pusi no perioda.
Lai iestatītu periodiskas darbības, izmantojiet taimera mezglus.
Es atzÄ«mÄju, ka Å”Ädus digitÄlos signÄlus, kur ānullesā un āviensā ilgums ir vienÄds, sauc par āmeanderā.
Es ceru, ka esmu nedaudz precizÄjis jautÄjumu par to, kÄ notikumi tiek izplatÄ«ti starp mezgliem un ko nevajadzÄtu darÄ«t?
SecinÄjums un atsauces
Raksts izrÄdÄ«jÄs Ä«ss, bet Å”is raksts ir atbilde uz jautÄjumiem, kas raduÅ”ies par mezgliem un notikumiem.
AttÄ«stoties programmaparatÅ«rai un parÄdoties jauniem piemÄriem, rakstÄ«Å”u par to, kÄ programmÄt ShioTiny mazi raksti, ja vien tas cilvÄkiem bÅ«s interesanti.
TÄpat kÄ iepriekÅ”, diagramma, programmaparatÅ«ra, piemÄri, komponentu apraksts un viss
JautÄjumi, ieteikumi, kritika - dodieties Å”eit: [e-pasts aizsargÄts]
Avots: www.habr.com