ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

ቁልፍ ነጥቦች ወይም ይህ ጽሑፍ ስለ ምን ነው

የጽሁፉ ርዕስ ቪዥዋል PLC ፕሮግራም ነው። ሺዮቲኒ እዚህ ለተገለጸው ዘመናዊ ቤት፡- ShioTiny፡ አነስተኛ አውቶሜትድ፣ የነገሮች ኢንተርኔት ወይም “ከዕረፍት ስድስት ወር በፊት”.

በጣም በአጭሩ እንደ ጽንሰ-ሀሳቦች አንጓዎች, ግንኙነቶች, ክስተቶች, እንዲሁም በ ላይ የእይታ ፕሮግራም የመጫን እና የማስፈጸም ባህሪያት ESP8266የ PLC መሠረት የሆነው ሺዮቲኒ.

መግቢያ ወይም ሁለት ድርጅታዊ ጥያቄዎች

ስለ እድገቴ በቀደመው ጽሑፍ ውስጥ ስለ ተቆጣጣሪው ችሎታዎች አጭር መግለጫ ሰጥቻለሁ ሺዮቲኒ.

በሚገርም ሁኔታ ህዝቡ ከፍተኛ ፍላጎት አሳይቷል እናም ብዙ ጥያቄዎችን ጠየቀኝ። አንዳንድ ጓደኞቼ ወዲያውኑ ከእኔ ተቆጣጣሪ ለመግዛት አቀረቡ። አይ፣ ትንሽ ገንዘብ ለማግኘት አልቃወምም፣ ነገር ግን ህሊናዬ በሶፍትዌር አንፃር በጣም አደገኛ የሆነ ነገር እንድሸጥ አይፈቅድልኝም።

ስለዚህ፣ የጽኑ ትዕዛዝ ሁለትዮሾችን እና የመሳሪያውን ንድፍ በ GitHub ላይ ለጥፌአለሁ፡ firmware + አጭር መመሪያዎች + ዲያግራም + ምሳሌዎች.

አሁን ሁሉም ሰው ESP-07ን ብልጭ ድርግም እና ከ firmware ራሳቸው ጋር መጫወት ይችላል። ማንም ሰው በፎቶው ላይ እንዳለው በትክክል አንድ አይነት ሰሌዳን የሚፈልግ ከሆነ ብዙዎቹ አሉኝ. በኢሜል ይፃፉ [ኢሜል የተጠበቀ]. ግን ፣ የማይረሳው ኦጉርትሶቭ እንደተናገረው “ለማንኛውም ነገር ተጠያቂ አይደለሁም!”

እንግዲያውስ ወደ ነጥቡ እንሂድ፡ ምንድን ነው "ክበባት"(መስቀለኛ መንገድ) እና"ክስተት"? ፕሮግራሙ እንዴት ነው የሚሰራው?

እንደተለመደው በቅደም ተከተል እንጀምር፡ ፕሮግራሙን በማውረድ።

ፕሮግራሙ እንዴት እንደሚጫን

አንድ ቁልፍ ስንጫን በሚሆነው እንጀምር ስቀል በአርታዒው ውስጥ ElDraw እና የእኛ ወረዳ-ፕሮግራማችን, የሚያማምሩ ካሬዎችን ያካተተ, ወደ መሳሪያው ውስጥ ይበርራል.

በመጀመሪያ ደረጃ፣ ባቀረብነው ሥዕላዊ መግለጫ መሠረት፣ መግለጫው በጽሑፍ መልክ ተገንብቷል።
በሁለተኛ ደረጃ፣ ሁሉም የመስቀለኛ ክፍል ግብዓቶች ከውጤቶች ጋር የተገናኙ መሆናቸውን ያረጋግጣል። "የተንጠለጠሉ" መግቢያዎች ሊኖሩ አይገባም. እንደዚህ አይነት ግቤት ከተገኘ, ወረዳው በ ShIoTiny ውስጥ አይጫንም, እና አርታኢው ተዛማጅ ማስጠንቀቂያ ያሳያል.

ሁሉም ነገር ጥሩ ከሆነ፣ አርታዒው የወረዳውን አንድ መስቀለኛ መንገድ የጽሑፍ መግለጫ ወደ ShIoTiny ይልካል። እርግጥ ነው, ከ ShioTiny ያለው ነባር ወረዳ በመጀመሪያ ይወገዳል. የተገኘው የጽሑፍ መግለጫ በ FLASH ማህደረ ትውስታ ውስጥ ተከማችቷል።

በነገራችን ላይ አንድ ወረዳን ከመሳሪያው ላይ ማስወገድ ከፈለጋችሁ በቀላሉ ባዶ ምልክቱን ወደ ውስጡ ይጫኑ (አንድ መስቀለኛ ክፍል ያልያዘ)።

አንዴ ሙሉው የወረዳ መርሃ ግብር በ ShIoTiny PLC ውስጥ ከተጫነ "መፈጸም" ይጀምራል. ምን ማለት ነው?

ኃይሉ ሲበራ እና ከአርታዒው ወረዳ ሲቀበሉ አንድ ወረዳን ከ FLASH ማህደረ ትውስታ የመጫን ሂደቶች ተመሳሳይ መሆናቸውን ልብ ይበሉ።

በመጀመሪያ, የመስቀለኛ እቃዎች በገለፃቸው መሰረት ይፈጠራሉ.
ከዚያም በኖዶች መካከል ግንኙነቶች ይዘጋጃሉ. ማለትም የውጤቶች አገናኞች ወደ ግብዓቶች እና ግብዓቶች ወደ ውፅዓቶች ይፈጠራሉ።

እና ከዚህ ሁሉ በኋላ ብቻ ዋናው የፕሮግራም አፈፃፀም ዑደት ይጀምራል.

ለረጅም ጊዜ ጻፍኩ ፣ ግን አጠቃላይ ሂደቱ - ወረዳውን ከ FLASH ማህደረ ትውስታ እስከ ዋናው ዑደት ድረስ “ከመጫን” ጀምሮ - ለ 60-80 አንጓዎች ዑደት የአንድ ሰከንድ ክፍልፋይ ይወስዳል።

ዋናው ሉፕ እንዴት ነው የሚሰራው? በጣም ቀላል። በመጀመሪያ መከሰቱን ይጠብቃል ክስተቶች በአንዳንድ መስቀለኛ መንገድ, ከዚያም ያንን ክስተት ያስኬዳል. እና ስለዚህ ማለቂያ የሌለው። ደህና፣ ወይም አዲስ እቅድ ወደ ShioTiny እስኪሰቅሉ ድረስ።

ብዙ ጊዜ እንደዚህ ያሉ ነገሮችን ጠቅሻለሁ። ክስተቶች, አንጓዎች и ግንኙነቶች. ግን ይህ ከሶፍትዌር እይታ አንጻር ምንድነው? ዛሬ ስለዚህ ጉዳይ እንነጋገራለን.

አንጓዎች, ግንኙነቶች እና ክስተቶች

ለ የወረዳ ፕሮግራሞች ምሳሌዎችን ብቻ ይመልከቱ ሺዮቲኒስዕሉ ሁለት አካላትን ብቻ - አንጓዎች (ወይም ንጥረ ነገሮች) እና በመካከላቸው ያሉ ግንኙነቶችን እንደሚያካትት ለመረዳት።

መስቀለኛ መንገድ, ግን አዎ ወይም የወረዳ አካል የአንዳንዶች ምናባዊ ውክልና ነው። ድርጊት በመረጃው ላይ. ይህ የሂሳብ አሰራር፣ ሎጂካዊ ኦፕሬሽን ወይም ማንኛውም ወደ አእምሯችን የሚመጣ ኦፕሬሽን ሊሆን ይችላል። ዋናው ነገር መስቀለኛ መንገድ መግቢያ እና መውጫ አለው.

ግቤት - ይህ መስቀለኛ መንገድ ውሂብ የሚቀበልበት ቦታ ነው. የግቤት ምስሎች ሁልጊዜ በመስቀለኛ ክፍል በግራ በኩል የሚገኙ ነጥቦች ናቸው.

ውጣ - ይህ የመስቀለኛ መንገድ ሥራ ውጤት የተገኘበት ቦታ ነው. የውጤት ምስሎች ሁልጊዜ በመስቀለኛ ቀኝ በኩል የሚገኙ ነጥቦች ናቸው.

አንዳንድ አንጓዎች ግብዓቶች የሉትም። እንደነዚህ ያሉት አንጓዎች በውስጥ በኩል ውጤቱን ይፈጥራሉ. ለምሳሌ, ቋሚ መስቀለኛ መንገድ ወይም ዳሳሽ መስቀለኛ መንገድ: ውጤቱን ሪፖርት ለማድረግ ከሌሎች አንጓዎች መረጃ አያስፈልጋቸውም.

ሌሎች አንጓዎች, በተቃራኒው, ምንም ውጤቶች የላቸውም. እነዚህ ለምሳሌ አንቀሳቃሾች (ሪሌይ ወይም ተመሳሳይ ነገር) የሚያሳዩ አንጓዎች ናቸው። መረጃን ይቀበላሉ ነገር ግን ለሌሎች አንጓዎች የሚገኝ የስሌት ውጤት አያመጡም።

በተጨማሪም, ልዩ የሆነ የአስተያየት መስቀለኛ መንገድም አለ. ምንም አይሰራም, ምንም ግብዓቶች ወይም ውጤቶች የሉትም. ዓላማው በስዕሉ ላይ ማብራሪያ መሆን ነው.

ምን ሆነ "ክስተት"? ክስተት በማንኛውም መስቀለኛ መንገድ ውስጥ አዲስ ውሂብ ብቅ ማለት ነው. ለምሳሌ፣ ክስተቶች የሚያካትቱት፡ በግቤት ሁኔታ ለውጥ (መስቀለኛ መንገድ ግቤትከሌላ መሣሪያ ውሂብ መቀበል (አንጓዎች ኤም.ቲ.ቲ. и UDP), የተወሰነ ጊዜ የሚያበቃበት ጊዜ (አንጓዎች ሰዓት ቆጣሪ и መዘግየት) እናም ይቀጥላል.

ዝግጅቶች ለምንድነው? አዎን, በየትኛው መስቀለኛ መንገድ አዲስ ውሂብ እንደተነሳ እና የየትኞቹ አንጓዎች አዲስ መረጃን ከመቀበል ጋር በተገናኘ መለወጥ እንዳለባቸው ለመወሰን. ክስተቱ፣ ልክ እንደዚያው፣ ግዛታቸው መፈተሽ እና መለወጥ ያለበትን ሁሉንም አንጓዎች እስኪያልፍ ድረስ በመስቀለኛ መንገዱ ሰንሰለት ላይ “ያልፋል።

ሁሉም አንጓዎች በሁለት ምድቦች ሊከፈሉ ይችላሉ.
ክስተቶችን መፍጠር የሚችሉ አንጓዎችን እንጥራ"ንቁ አንጓዎች».
ክስተቶችን መፍጠር የማይችሉ አንጓዎችን እንጠራዋለንተገብሮ አንጓዎች».

መስቀለኛ መንገድ አንድን ክስተት ሲያመነጭ (ይህም አዲስ መረጃ በውጤቱ ላይ ይታያል) ከዚያም በአጠቃላይ ሁኔታ ከክስተቱ ጄነሬተር መስቀለኛ ውፅዓት ጋር የተገናኘው የጠቅላላው የአንጓዎች ሰንሰለት ሁኔታ ይለወጣል።

ግልጽ ለማድረግ, በሥዕሉ ላይ ያለውን ምሳሌ ተመልከት.

ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

እዚህ ያሉት ንቁ አንጓዎች ግቤት1፣ ግብዓት2 እና ግብዓት3 ናቸው። የተቀሩት አንጓዎች ተገብሮ ናቸው. አንድ ወይም ሌላ ግብዓት ሲዘጋ ምን እንደሚሆን እናስብ። ለመመቻቸት, ውጤቶቹ በሠንጠረዥ ውስጥ ተጠቃለዋል.

ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

እንደሚመለከቱት, አንድ ክስተት ሲከሰት, ከክስተቱ ምንጭ መስቀለኛ መንገድ እስከ መጨረሻው መስቀለኛ መንገድ ሰንሰለት ይገነባል. በሰንሰለት ውስጥ የማይወድቁ የእነዚያ አንጓዎች ሁኔታ አይለወጥም.

ህጋዊ ጥያቄ ይነሳል-ሁለት ወይም ብዙ ክስተቶች በአንድ ጊዜ ቢከሰቱ ምን ይሆናል?

የግሌብ አንፊሎቭን ሥራ ፍቅረኛ እንደመሆኔ፣ “ከድንጋጤ አምልጥ” ወደ ተባለው መጽሐፉ የማወቅ ጉጉት ያለው ጠያቂ ለመላክ እፈተናለሁ። ይህ "ለትንንሾቹ አንጻራዊነት ጽንሰ-ሀሳብ" ነው, እሱም "በተመሳሳይ ጊዜ" ምን ማለት እንደሆነ እና ከእሱ ጋር እንዴት እንደሚኖሩ በደንብ ያብራራል.

ግን በተግባር ሁሉም ነገር በጣም ቀላል ነው-ሁለት ወይም ብዙ ክስተቶች ሲከሰቱ ከእያንዳንዱ ክስተት ምንጭ የሚመጡ ሁሉም ሰንሰለቶች በቅደም ተከተል የተገነቡ እና የሚከናወኑ ናቸው, እና ምንም ተአምራት አይከሰቱም.

ከጉጉት አንባቢ የሚቀጥለው ሙሉ በሙሉ ህጋዊ ጥያቄ አንጓዎቹ ወደ ቀለበት ከተገናኙ ምን ይሆናል? ወይም፣ በነዚህ ብልህ ሰዎች መካከል እንደሚሉት፣ ግብረመልስ አስተዋውቁ። ያም ማለት የአንዱን አንጓዎች ውፅዓት ወደ ቀዳሚው መስቀለኛ መንገድ ግቤት ያገናኙ ስለዚህ የዚህ መስቀለኛ መንገድ የውጤት ሁኔታ በመግቢያው ላይ ተጽዕኖ ያሳድራል። አርታዒው የመስቀለኛ መንገዱን ውፅዓት ከመግቢያው ጋር በቀጥታ እንዲያገናኙ አይፈቅድልዎትም. ElDraw. ነገር ግን በተዘዋዋሪ, ከታች ባለው ስእል እንደሚታየው, ይህን ማድረግ ይቻላል.

ስለዚህ በዚህ ጉዳይ ላይ ምን ይሆናል? መልሱ በጣም "የተወሰነ" ይሆናል: በየትኛው አንጓዎች ላይ በመመስረት. በሥዕሉ ላይ ያለውን ምሳሌ እንመልከት።

ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

የ Input1 የግቤት እውቂያዎች ሲከፈቱ, የመስቀለኛ ክፍል A የላይኛው ግቤት 0 ነው. የመስቀለኛ መንገድ A ደግሞ 0 ነው. የመስቀለኛ B ውፅዓት 1 ነው. እና በመጨረሻም, የመስቀለኛ A ታችኛው ግቤት 1 ነው. ሁሉም ነገር ነው. ግልጽ። እና ግልጽ ላልሆኑት, የ "AND" እና "NOT" አንጓዎች እንዴት እንደሚሠሩ ማብራሪያ ለማግኘት ከዚህ በታች ይመልከቱ.

አሁን የ Input1 ግቤትን እውቂያዎች እንዘጋዋለን, ማለትም, አንዱን በመስቀለኛ A ላይኛው ግቤት ላይ እንተገብራለን. የኤሌክትሮኒክስ ዕቃዎችን የሚያውቁ ሰዎች በእውነቱ አመክንዮአዊ አካላትን በመጠቀም ክላሲክ የጄነሬተር ዑደት እንደምናገኝ ያውቃሉ። እና በንድፈ ሀሳብ ፣ እንዲህ ዓይነቱ ወረዳ ያለማቋረጥ በቅደም ተከተል 1-0-1-0-1-0… በኤ እና ቢ ውፅዓት ማምረት አለበት። እና 0-1-0-1-0-1-…. ከሁሉም በላይ, ክስተቱ ያለማቋረጥ የአንጓዎች A እና B ሁኔታ መለወጥ አለበት, በክበብ 2-3-2-3-...!

ግን በእውነቱ ይህ አይከሰትም. ወረዳው በዘፈቀደ ሁኔታ ውስጥ ይወድቃል - ወይም ሪሌይው እንደበራ ወይም እንደጠፋ ይቆያል፣ ወይም በተከታታይ ብዙ ጊዜ በጥቂቱ ጩኸት ማብራት እና ማጥፋት ይችላል። ሁሉም በማርስ ደቡባዊ ምሰሶ ላይ ባለው የአየር ሁኔታ ላይ የተመሰረተ ነው. ይህ የሚሆነውም ለዚህ ነው።

ከአንድ መስቀለኛ መንገድ ግቤት 1 ክስተት የመስቀለኛ መንገድ A, ከዚያም መስቀለኛ B እና የመሳሰሉትን በክበብ ውስጥ ብዙ ጊዜ ይለውጣል. መርሃግብሩ የክስተቱን "ሎፒንግ" ይገነዘባል እና ይህን ካርኒቫል በግድ ያስቆመዋል. ከዚህ በኋላ, አዲስ ክስተት እስኪከሰት ድረስ በኖዶች A እና B ሁኔታ ላይ ለውጦች ታግደዋል. ፕሮግራሙ “በክበቦች ውስጥ መሽከርከር አቁም!” ብሎ የወሰነበት ቅጽበት። - በአጠቃላይ, በብዙ ሁኔታዎች ላይ የተመሰረተ እና በዘፈቀደ ሊቆጠር ይችላል.

አንጓዎችን ወደ ቀለበት ሲያገናኙ ይጠንቀቁ - ውጤቶቹ ሁል ጊዜ ግልፅ አይሆኑም! ምን እና ለምን እየሰሩ እንደሆነ ጥሩ ሀሳብ ይኑርዎት!

አሁንም ለእኛ በሚገኙ አንጓዎች ላይ ጀነሬተር መገንባት ይቻላል? አዎ፣ ትችላለህ! ነገር ግን ይህ በራሱ ክስተቶችን መፍጠር የሚችል መስቀለኛ መንገድ ያስፈልገዋል. እና እንደዚህ አይነት መስቀለኛ መንገድ አለ - ይህ "የዘገየ መስመር" ነው. የ 6 ሰከንድ ጊዜ ያለው ጀነሬተር እንዴት እንደሚሰራ ከዚህ በታች ባለው ስእል እንይ።

ShIoTiny፡ አንጓዎች፣ አገናኞች እና ዝግጅቶች ወይም የስዕል ፕሮግራሞች ባህሪዎች

የጄነሬተሩ ቁልፍ አካል መስቀለኛ መንገድ A - የመዘግየቱ መስመር. የመዘግየቱን መስመር ግቤት ሁኔታ ከ 0 ወደ 1 ከቀየሩ ፣ ከዚያ 1 በውጤቱ ላይ ወዲያውኑ አይታይም ፣ ግን ከተወሰነ ጊዜ በኋላ። በእኛ ሁኔታ 3 ሰከንድ ነው. በተመሳሳይ ሁኔታ የመዘግየቱን መስመር የመግቢያ ሁኔታ ከ 1 ወደ 0 ከቀየሩ ፣ በውጤቱ ላይ 0 ከተመሳሳይ 3 ሰከንዶች በኋላ ይታያል። የመዘግየቱ ጊዜ የተቀመጠው በሰከንድ አስረኛ ነው። ማለትም 30 እሴቱ 3 ሰከንድ ማለት ነው።

የመዘግየቱ መስመር ልዩ ባህሪ የመዘግየቱ ጊዜ ካለፈ በኋላ ክስተትን ይፈጥራል.

መጀመሪያ ላይ የመዘግየቱ መስመር ውፅዓት 0 ነበር ብለን እናስብ። ምንም ነገር ወዲያውኑ አይከሰትም. በመዘግየቱ መስመር ውፅዓት፣ 0 ይቀራል፣ ነገር ግን የመዘግየቱ ጊዜ ቆጠራው ይጀምራል። 1 ሰከንድ አለፉ። እና ከዚያ የመዘግየቱ መስመር አንድ ክስተት ይፈጥራል. በእሱ ውፅዓት ላይ ይታያል 0. ይህ ክፍል, በመስቀለኛ B በኩል ካለፉ በኋላ - ኢንቮርተር - ወደ 3 ይቀየራል እና ወደ መዘግየት መስመር ግቤት ይሄዳል. ሌላ 1 ሰከንድ አለፈ... እና ሂደቱ ይደገማል። ይህም በየ 0 ሰከንድ የመዘግየቱ መስመር ውፅዓት ሁኔታ ከ 3 ወደ 3 እና ከ 0 ወደ 1 ይቀየራል. ሪሌይ ጠቅ ያደርጋል. ጀነሬተር እየሰራ ነው። የልብ ምት ጊዜ 1 ሰከንድ ነው (በውጤቱ ዜሮ 0 ሴኮንድ እና በውጤቱ አንድ 6 ሴኮንድ)።

ነገር ግን, በእውነተኛ ወረዳዎች ውስጥ, ብዙውን ጊዜ ይህንን ምሳሌ መጠቀም አያስፈልግም. ከተወሰነ ጊዜ ጋር በትክክል እና ያለ ውጭ እርዳታ ተከታታይ የልብ ምት የሚያመነጩ ልዩ የሰዓት ቆጣሪ ኖዶች አሉ። በእነዚህ ጥራጥሬዎች ውስጥ የ "ዜሮ" እና "አንድ" ቆይታ ከግማሽ ጊዜ ጋር እኩል ነው.

ወቅታዊ እርምጃዎችን ለማዘጋጀት የሰዓት ቆጣሪ ኖዶችን ይጠቀሙ።

የ "ዜሮ" እና "አንድ" የሚቆይበት ጊዜ እኩል በሚሆንበት ጊዜ እንደዚህ ያሉ ዲጂታል ምልክቶች "አማካይ" ተብለው ይጠራሉ.

ክስተቶች በአንጓዎች መካከል እንዴት እንደሚተላለፉ እና ምን ማድረግ እንደሌለበት ጥያቄውን ትንሽ እንዳብራራ ተስፋ አደርጋለሁ?

መደምደሚያ እና ማጣቀሻዎች

ጽሑፉ አጭር ሆኖ ተገኝቷል, ነገር ግን ይህ ጽሑፍ አንጓዎችን እና ክስተቶችን በተመለከተ ለተነሱ ጥያቄዎች መልስ ነው.

ፈርምዌር ሲዘጋጅ እና አዳዲስ ምሳሌዎች ሲታዩ፣ እንዴት ፕሮግራም ማድረግ እንዳለብኝ እጽፋለሁ። ሺዮቲኒ ለሰዎች አስደሳች እስከሆነ ድረስ ትናንሽ ጽሑፎች.

እንደበፊቱ ፣ ዲያግራም ፣ firmware ፣ ምሳሌዎች ፣ የአካል ክፍሎች መግለጫ እና ሁሉም ነገር የቀረው እዚህ አለ።.

ጥያቄዎች ፣ ጥቆማዎች ፣ ትችቶች - እዚህ ይሂዱ [ኢሜል የተጠበቀ]

ምንጭ: hab.com

አስተያየት ያክሉ