ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

Xalên sereke an ev gotar li ser çi ye

Mijara gotarê bernameya PLC ya dîtbar e ShioTiny ji bo xaniyê biaqil ku li vir hatî diyar kirin: ShioTiny: otomasyona piçûk, Înterneta tiştan an "şeş meh beriya betlaneyê".

Pir bi kurtî têgehên wekî girêkan, en.wiktionary.org связи (Noun), bûyeran, û her weha taybetmendiyên barkirin û pêkanîna bernameyek dîtbarî li ser ESP8266, ku bingeha PLC ye ShioTiny.

Destpêk an çend pirsên rêxistinî

Di gotara berê de di derbarê pêşkeftina min de, min kurteyek li ser kapasîteyên kontrolker da ShioTiny.

Pir ecêb e, gel eleqeyek pir xurt nîşan da û gelek pirs ji min kirin. Hin hevalan jî yekser pêşniyar kirin ku ji min re kontrolkerek bikirin. Na, ez ne li dijî qezençkirina pereyek hindik im, lê wijdanê min nahêle ez tiştekî ku di warê nermalavê de hîn jî pir xam e bifroşim.

Ji ber vê yekê, min binareyên firmware û diyagrama cîhazê li ser GitHub şand: firmware + talîmatên herî kurt + diagram + mînak.

Naha her kes dikare ESP-07 bişewitîne û bixwe bi firmware-ê bilîze. Ger kesek bi rastî tam heman panelê wekî di wêneyê de dixwaze, wê hingê min çend ji wan hene. Bi e-nameyê binivîsin [email parastî]. Lê wek ku Ogurtsovê jibîrnekirî digot: "Ez ji tiştekî ne berpirsiyar im!"

Ji ber vê yekê, em werin ser xalê: çi ye "nîsk"(girêk) û"bûyer"? Bername çawa tê meşandin?

Wekî gelemperî, em bi rêzê dest pê bikin: bi dakêşana bernameyê.

Bername çawa tê barkirin

Werin em bi çi diqewime gava ku em bişkokek pêl dikin dest pê bikin Upload di edîtorê de ElDraw û bernameya me ya çerxa ku ji çarçikên bedew pêk tê, difire nav cîhazê.

Pêşî, li ser bingeha diyagrama ku me xêz kiriye, danasîna wê di forma nivîsê de tê çêkirin.
Ya duyemîn, ew kontrol dike ka hemî têketinên girêkê bi derketinan ve girêdayî ne. Divê têketinên "daleqandî" nebin. Ger têketinek wusa were tespît kirin, dê çerx li ShiIoTiny neyê barkirin, û edîtor dê hişyariyek têkildar nîşan bide.

Ger her tişt baş derbas bû, edîtor ravekek nivîsê ya girêkê yek carî ji ShiIoTiny re dişîne. Bê guman, çerxa heyî ya ji ShioTiny yekem tê rakirin. Danasîna nivîsê ya encam di bîra FLASH de tê hilanîn.

Bi awayê, heke hûn dixwazin dorhêlek ji amûrekê derxînin, wê hingê bi tenê dorhêlek vala tê de bar bikin (ne ku hêmanek girêkek yekane tê de tune).

Dema ku tevahiya bernameya dorpêçê di ShioTiny PLC-ê de tê barkirin, ew dest bi "darvekirinê" dike. Poldayî?

Bala xwe bidinê ku pêvajoyên ji bo barkirina şebekek ji bîra FLASH dema ku hêz tê vedan û dema ku çerxeyek ji edîtorê werdigirin yek in.

Pêşîn, tiştên node li ser bingeha ravekirina wan têne afirandin.
Dûv re têkilî di navbera girêkan de têne çêkirin. Ango, girêdanên derhaneyan bi ketina û têketinên bi derkan re têne çêkirin.

Û tenê piştî van hemûyan çerxa pêkanîna bernameya sereke dest pê dike.

Min demek dirêj nivîsand, lê tevahiya pêvajo - ji "barkirina" çerxê ji bîra FLASH heya destpêkirina çerxa sereke - ji bo çerxa 60-80 girêkan perçeyek çirkeyê digire.

Xala sereke çawa dixebite? Pir sade. Pêşî ew li benda derketinê ye bûyeran li hin nodek, paşê wê bûyerê pêvajoyê dike. Û bi vî awayî bêdawî. Welê, an heya ku ew nexşeyek nû li ShioTiny barkirin.

Berê jî çend caran min behsa tiştên wiha kiriye bûyeran, girêkan и en.wiktionary.org связи (Noun). Lê ev ji hêla nermalavê ve çi ye? Em ê îro li ser vê biaxivin.

Nod, girêdan û bûyer

Tenê li mînakên bernameyên dorpêçê yên ji bo binêrin ShioTinyfêm bikin ku diagram tenê ji du pêkhateyan pêk tê - nod (an hêman) û girêdanên di navbera wan de.

Node, lê belê an element circuit temsîla virtual ya hinekan e çalakiyê li ser daneyan. Ev dibe ku operasyonek hejmarî, operasyonek mentiqî, an her karek ku tê bîra me be. Ya sereke ev e ku girêk xwedî têketin û derketinek e.

entry - ev cihê ku nod daneyan distîne ye. Wêneyên têketinê xalên ku her gav li milê çepê yê girêkê ne.

Derketin - ev cîhê ku encama operasyona girêkê tê wergirtin e. Wêneyên derketinê xalên ku her gav li milê rastê yê girêkê ne.

Hin girêk têketin tune. Girêkên bi vî rengî encamê di hundurê xwe de çêdikin. Mînakî, girêkek domdar an girêkek senzor: ew ne hewce ne daneya ji girêkên din da ku encamê rapor bikin.

Berevajî vê, girêkên din tune ne. Ev nod in ku, ji bo nimûne, çalakker (rele an tiştek mîna wan) nîşan didin. Ew daneyan qebûl dikin lê encamek hesabkerî ya ku ji bo nodên din re peyda dibe çê nakin.

Wekî din, girêkek şîroveyek bêhempa jî heye. Tiştekî nake, ne ketin û ne jî derketin. Armanca wê ew e ku li ser diagramê ravekirinek be.

çi bûye"bûyer? Bûyer derketina daneyên nû di her girêkê de ye. Mînakî, bûyer ev in: guhertina rewşa têketinê (girêk Beyan), wergirtina daneyan ji amûrek din (girêdan MQTT и UDP), bidawîbûna demek diyarkirî (girêdan timer и Delay) wate ya vê çîye.

Bûyer ji bo çi ne? Erê, ji bo ku were destnîşankirin di kîjan girêkê de daneya nû derketiye û di girêdana wergirtina daneya nû de pêdivî ye ku rewşa kîjan girêkan were guheztin. Bûyer, wekî ku bû, li ser zincîra girêkan "derbas dibe" heya ku ew hemî girêkên ku divê rewşa wan were kontrol kirin û guheztin derbas bike.

Hemî nod dikarin li du kategoriyan bêne dabeş kirin.
Werin em gazî girêkên ku dikarin bûyeran biafirînin bikin"girêkên çalak".
Em ê gazî girêkên ku nikarin bûyeran biafirînin bikin"girêkên pasîf".

Dema ku nodek bûyerek çêdike (ango daneyên nû di derana wê de xuya dibin), wê hingê di rewşa gelemperî de rewşa tevahiya zincîra girêkên ku bi derana girêka jeneratorê bûyerê ve girêdayî ye diguhere.

Ji bo zelalkirina wê, mînaka di wêneyê de binirxînin.

ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

Li vir girêkên çalak Input1, Input2 û Input3 in. Girêkên mayî pasîf in. Werin em binihêrin ka çi diqewime gava yek an têketinek din girtî be. Ji bo rehetiyê, encam di tabloyek de têne kurt kirin.

ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

Wekî ku hûn dikarin bibînin, dema ku bûyerek diqewime, zincîrek ji girêka çavkaniya bûyerê heya girêka dawî tê çêkirin. Rewşa wan girêkên ku nakevin zincîrê naguhere.

Pirseke rewa derdikeve holê: eger du an jî çend bûyer bi hev re biqewimin dê çi bibe?

Wekî evîndarek ji xebata Gleb Anfilov, ez têm ceribandin ku pirsyarek meraq bişînim pirtûka wî ya "Reva ji Surprise". Ev "teoriya nisbetbûnê ya ji bo biçûkan" e, ku baş rave dike ka "hemdem" tê çi wateyê û meriv çawa pê re tê jiyîn.

Lê di pratîkê de her tişt pir hêsan e: gava ku du an jî çend bûyer diqewimin, hemî zincîrên ji her çavkaniya bûyerê bi rêzê têne çêkirin û pêvajoy kirin, û tu mûcîze çênabe.

Pirsa din a bi tevahî rewa ji xwendevanek meraq ev e ku dê çi bibe ger girêk bi zengilek ve girêdayî bin? An jî, wekî ku ew di nav van xortên we yên jîr de dibêjin, bertek nîşan bidin. Ango, derana yek ji girêkan bi ketina girêka berê ve girêdide da ku rewşa derketina vê girêkê bandorê li rewşa têketina wê bike. Edîtor dê nehêle hûn rasterast derana girêkekê bi têketina wê ve girêdin. ElDraw. Lê bi awayekî nerasterast, wekî di jimareya jêrîn de, ev dikare were kirin.

Îcar di vê rewşê de dê çi bibe? Bersiv dê pir "pêkûpêk" be: li ser kîjan girêkan ve girêdayî ye. Werin em li mînaka di wêneyê de binêrin.

ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

Dema ku têkiliyên têketinê yên Input1 vekirî ne, têketina jorîn a girê A 0 ye. Derketina girê A jî 0 ye. Derketina girê B 1 ye. Û di dawiyê de, ketina jêrîn a girê A 1 e. Her tişt zelal. Û ji bo yên ku ne zelal in, li jêr li ravekek çawa girêkên "Û" û "NE" dixebitin binêrin.

Naha em têkiliyên têketina Input1 digirin, ango, em yek li têketina jorîn a girê A bicîh dikin. Yên ku bi elektronîk dizanin dizanin ku bi rastî em ê bi karanîna hêmanên mantiqê çerxek jeneratorek klasîk bistînin. Û di teorîyê de, dorhêlek weha divê bêdawî rêzika 1-0-1-0-1-0… li derketina hêmanên A û B çêbike. û 0-1-0-1-0-1-…. Beriya her tiştî, bûyer pêdivî ye ku bi domdarî rewşa girêkên A û B biguhezîne, di çemberek 2-3-2-3-…

Lê di rastiyê de ev yek pêk nayê. Dê çerx bikeve rewşek bêserûber - an rele dê li ser bimîne an vekêşe, an jî dibe ku çend caran li pey hev hinekî bişewitîne û qut bibe. Ew hemî bi hewaya li bakura başûrê Marsê ve girêdayî ye. Û ji ber vê yekê ev yek dibe.

Bûyerek ji girêka Input1 rewşa girêka A, dûv re girê B, û hwd çend caran di çemberekê de diguherîne. Bername "lêgerîna" bûyerê tesbît dike û bi zorê vê karnavalê disekine. Piştî vê yekê, guhertinên di rewşa girêkên A û B de têne asteng kirin heya ku bûyerek nû çêbibe. Kêliya ku bername biryar dide "di nav çemberan de zivirîn raweste!" - bi gelemperî, ew bi gelek faktoran ve girêdayî ye û dikare bêserûber were hesibandin.

Dema ku girêkan bi zengilê ve girêdidin baldar bin - bandor dê her gav diyar nebin! Fêkek baş hebe ka hûn çi û çima dikin!

Ma hîn jî gengaz e ku em li ser girêkên ku ji me re peyda dibin jeneratorek çêbikin? Belê tu dikarî! Lê ev yek girêkek hewce dike ku dikare bixwe bûyeran çêbike. Û nodek wusa heye - ev "xeta dereng" e. Ka em bibînin ka jeneratorek bi heyama 6 çirkeyan di wêneya jêrîn de çawa dixebite.

ShioTiny: girêk, girêdan û bûyer an taybetmendiyên bernameyên xêzkirinê

Hêmana sereke ya jeneratorê node A ye - xeta dereng. Ger hûn rewşa têketina xeta derengiyê ji 0-ê berbi 1-ê biguhezînin, wê hingê 1 dê tavilê li derketinê xuya neke, lê tenê piştî demek diyarkirî. Di rewşa me de ew 3 çirke ye. Bi heman rengî, heke hûn rewşa têketina xeta derengiyê ji 1-ê berbi 0-ê biguhezînin, wê hingê 0 li dergehê dê piştî heman 3 çirkeyan xuya bibe. Wextê derengmayînê di dehyek çirkeyê de tê danîn. Ango nirxa 30 tê wateya 3 çirkeyan.

Taybetmendiyek taybetî ya xeta derengmayînê ev e ku ew bûyerek piştî ku dema dereng qedandinê çêdike.

Ka em bihesibînin ku di destpêkê de derketina xeta derengmayînê 0 bû. Piştî ku girêka B - guhêrbar- derbas dibe, ev 0 dibe 1 û diçe têketina xeta derengiyê. Tiştek di cih de çênabe. Di derketina xeta dereng de, ew ê 0 bimîne, lê jimartina dema derengbûnê dê dest pê bike. 3 saniye derbas dibin. Û dûv re xeta dereng bûyerek çêdike. Di derana xwe de 1 xuya dike. Ev yekîne, piştî ku ji girêka B - guhêrbar - derbas dibe, dibe 0 û diçe têketina xeta derengmayînê. 3 saniyeyên din derbas dibin... û pêvajo dubare dibe. Ango her 3 çirkeyan rewşa derketina xeta derengiyê ji 0-ê diguhere 1-ê û paşê ji 1-ê diguhere 0. Rele bitikîne. Jenerator dixebite. Demjimêra pulsê 6 çirk e (3 çirk li derana sifirê û 3 çirk li derenca yek).

Lê, di çerxên rastîn de, bi gelemperî ne hewce ye ku vê nimûne bikar bînin. Girêkên demjimêrên taybetî hene ku bi bêkêmasî û bêyî alîkariya derve rêzek pêldan bi heyamek diyarkirî re çêdikin. Demjimêra "sifir" û "yek" di van pêlşan de bi nîvê heyamê re ye.

Ji bo sazkirina çalakiyên periyodîk, girêkên demjimêr bikar bînin.

Ez bala xwe didim ku îşaretên dîjîtal ên weha, ku dirêjahiya "sifir" û "yek" wekhev in, jê re "meander" tê gotin.

Ez hêvî dikim ku min pirs hinekî zelal kiribe ka bûyer di navbera nokan de çawa têne belav kirin û çi nekirin?

Encam û referans

Gotar kurt derket, lê ev gotar bersivek e ji bo pirsên ku di derheqê nod û bûyeran de derketine.

Her ku firmware pêşve diçe û mînakên nû xuya dibin, ez ê li ser çawa bernamekirinê binivîsim ShioTiny gotarên piçûk heta ku ew ê ji mirovan re balkêş be.

Wekî berê, diagram, firmware, nimûne, ravekirina pêkhateyan û her tişt yên mayî li vir e.

Pirs, pêşniyar, rexne - biçin vir: [email parastî]

Source: www.habr.com

Add a comment