Orodha ya maudhui:

EAL - Internet Internet - Fabrikshal: Hatua 7
EAL - Internet Internet - Fabrikshal: Hatua 7

Video: EAL - Internet Internet - Fabrikshal: Hatua 7

Video: EAL - Internet Internet - Fabrikshal: Hatua 7
Video: MINECRAFT IN REAL LIFE | МАЙНКРАФТ В РЕАЛЬНОЙ ЖИЗНИ (персонажи, предметы) 2024, Novemba
Anonim
EAL - Mtandao wa Viwanda - Fabrikshal
EAL - Mtandao wa Viwanda - Fabrikshal
EAL - Mtandao wa Viwanda - Fabrikshal
EAL - Mtandao wa Viwanda - Fabrikshal
EAL - Mtandao wa Viwanda - Fabrikshal
EAL - Mtandao wa Viwanda - Fabrikshal

Ili kufanya kazi kwa kutumia vifaa vya kuchapisha na kutekeleza mfumo na mfumo wa kutumia vifaa vya 4.0. Ninaelezea ushiriki, na kuiga masimulizi ya uigaji kwa picha. Ninaanguka kwenye huduma na huduma, na hivyo kuwa dioder. Udevendig, sidder der en RFID kortlæser, der skulle bruges til at lukke de relevante in i fabrikshallen. Takwimu zingine, vito kwenye hifadhidata kwenye Wampserver.

Hatua ya 1: RFID Kortlæser

RFID Kortlæser
RFID Kortlæser
RFID Kortlæser
RFID Kortlæser

Der er inkluderet en RFID orodha. Hensigten at ud from de num num der der på det kort, og den brik der er med er skrevet ind i vores Arduino kode. Tambua wakati wa kufanya kazi kwa njia ya upigaji kura kwa njia ya habari, ikiwa ni pamoja na kufanya kazi, utafta kazi yako kwa kutumia njia ya kupendeza, na kufanya kazi kwa njia ya msingi kutekelezewa kwa njia inayofaa.

Kama wewe ni mtoaji wa habari, unaweza kupata habari juu ya orodha. Lyset slukkes igen, en en en enhed, der er godkendt af kortlæseren, bliver detekteret.

Kortlæseren bliver fjernet fra projektet, da den kører seriel kommunikation. Kutoa taarifa kwa kufanya kazi kwa ajili ya kufanya kazi kwa njia ya bandari ya huduma, na kufanya kazi kwa Arduino Uno. Seriel porten, skal også bruges to Arduinoens ordrer, den vil kwa fresi vores Windows Forms applikation. Mimi hutaja swala moja kwa moja.

Hatua ya 2: Servomotor (Anlæg)

Huduma (Anlæg)
Huduma (Anlæg)
Huduma (Anlæg)
Huduma (Anlæg)
Huduma (Anlæg)
Huduma (Anlæg)

Ninaanguka kwa huduma, na kwa mtindo wa Arduino Uno. Den skalsimulere et anlæg, der kan productrer forskellige produkter. Kutumia, kuweka orodha ya vifaa kwa kutumia bidhaa, bliver gemt i en MySQL database. Motoren kan køre ud i tre forskellige positioner. Msimamizi wa msimamo wa Hver tre forskellige produkter. Kuongeza produktet er færdigproduceret, kører motoren tilbage i nul position, og afventer nye ordrer. Det er meningen at man, via WPF applikationen kan afgive nye ordrer to motoren. Hvad bliver zinazozalisha bliver gemt kwenye database ya MySQL.

Hatua ya 3: Hifadhidata ya MySQL - Indhold

Hifadhidata ya MySQL - Indhold
Hifadhidata ya MySQL - Indhold
Hifadhidata ya MySQL - Indhold
Hifadhidata ya MySQL - Indhold
Hifadhidata ya MySQL - Indhold
Hifadhidata ya MySQL - Indhold

Mimi MySQL databasen vil der være tre tabeller. Shimo la mmiliki wa shimo medje med hvilke produkter der er bestilt, na hvor mange. Katika andiko lenu kila kitu kinatokana na utaftaji wa bidhaa. Tena, na tunaweka orodha ya wamiliki wa hati juu ya uchunguzi zaidi juu ya matumizi ya bidhaa, na habari zaidi. Huduma zote za mtandaoni, tafadhali wasiliana na mipango ya uzalishaji. Kutoa fomu za Windows kwenye fomu za kupigia debe, na vifaa vyako vinatuma Arduinoen, pamoja na orodha. Kwa sasa kunaweza kutolewa kwa mpango, kila mtu atatumia Arduinoen, kwa sababu, orodha ya data inayofaa ya mpango wa habari. Kutoa taarifa juu ya data database kwa data. En Integer, en String, som bliver kaldt en VarChar, ni orodha. Utafikia wakati na Stempu ya Muda, Utafute kazi, na utafute habari.

Hatua ya 4: Arduino Kode

# pamoja

Servo myServo;

int servoPos; char produkt = '0'; kuanzisha batili () {myServo.ambatanisha (3); // Ujumuishaji wa mfululizo huanza Serial.begin (9600); } kitanzi batili () {// Læsning fra serial port produkt = Serial.read (); // Godkendelse af ingående ordrer switch (produkt) {// Produkt A (1) tutaamua kesi kesi 1 ': myServo.write (50); kuchelewesha (1000); andika (0); kuchelewesha (1000); Serial.println ("Imefanywa"); kuvunja; // Produkt B (2) udføres i denne kesi kesi '2': myServo.write (100); kuchelewesha (1000); andika (0); kuchelewesha (1000); Serial.println ("Imefanywa"); kuvunja; // Produkt C (3) udføres i denne kesi kesi '3': myServo.write (150); kuchelewesha (1000); andika (0); kuchelewesha (1000); Serial.println ("Imefanywa"); kuvunja; }}

Hatua ya 5: Ulinganishaji wa Fomu za Windows

kutumia System; kutumia System. Collections. Generic; kutumia System. ComponentModel; kutumia System. Data; kutumia Mfumo. Kuchora; kutumia System. Linq; kutumia Mfumo. Maandishi; kutumia System. Treading. Tasks; kutumia System. Windows. Forms; kutumia System. Collections; kutumia Bandari za System. IO; kutumia MySql; kutumia MySql. Data. MySqlClient;

nafasi ya majina WindowsFormsApp2

{darasa la sehemu ya umma Fomu1: Fomu {/ * Ninaelezea darasa bliver kwa umma kutofautisha oprettet. Herunder er der oprettet en Darasa (MySqlConnection) na viwango vya viwango vyangu ni brug, kwa kuwa saa moja ya kukataliwa kwa huduma ya MySQL. Ydermere er der oprettet en String (connectionString) den bruges to at definere hvilken bruger der skal on password and password, and database of database for er tale am. Kutumia idadi kamili, na safu ya 2d (safu). Grunden til det er at en ordrer kan bestå af flere produktioner af and produkt, au zaidi kuhusu bidhaa produkter. Huduma za Seriel kwa Arduinoen bliver zitamwonyesha. Ili kupata maelezo zaidi juu ya Darasa (BackgroundWorker). Shimo katika mpango bora wa mpango wa bliver inayowezesha kutafakariwa kwa watu wengi. Mimi dette tilfælde er det brugbart, da der kan blive oprettet nye ordrer, med korte mellemrum. * / Uunganisho wa MySqlConnection; unganisho la kambaString;

binafsi int ordrenummer;

siri ya kibinafsi [,] utaratibu = mpya int [100, 100]; siri ya kibinafsi kutumaOrder = mpya int [100]; kamba ya kibinafsi prodType;

SerialPort sp = mpya SerialPort ();

BackgroundWorker binafsi myWorker = mpyaWorker Worker ();

Fomu1 ya umma ()

{AnzishaComponent (); // Her bliver vores String (connectionString) ufafanuzi. unganishoString = "seva = 192.168.1.100; userid = mzizi; pwd = langeland; hifadhidata = arduino;"; / * Mtoaji wake anayebadilishwa "mfanyikazi wangu" alikaa kwenye kumbukumbu kwa kila aina ya vifaa bora vya kufanya kazi. * / myWorker. DoWork + = mpya DoWorkEventHandler (myWorker_DoWork); myWorker. WorkerReportsProgress = kweli; myWorker. WorkerSupportsCancellation = kweli; // Bliver yake mwenyewe baggrundsgennemløbet eksikveret. MyWorker. RunWorkerAsync (); // Her bliver der defineret hvilket format datoen kører i. Muundo wake bora unapewa data ya MySQL. tareheTimePicker1. CustomFormat = "yyyy-MM-dd"; tareheTimePicker1. Format = DateTimePickerFormat. Custom; }

utupu wa kibinafsi Afgiv_Ordre_Click (mtumaji wa vitu, EventArgs e)

{/ * Her er oprettet nogle variabler, der kun bliver brugt i dette batili. De tre første er Integers der skal definite hvilket produkt der er tale om. Ili kufanya kazi kwa ajili ya kutafakari juu ya mtu ambaye angeweza kutafakari juu ya mtu mwingine. Tenga nafasi ya kufanya kazi kwa ajili ya kufanya kazi kwa kila siku. * / int produktA = 1; int produktB = 2; int produktC = 3; int prodA = int. Parse (prodAOrder. Text); int prodB = int. Parse (prodBOrder. Text); int prodC = int. Parse (prodCOrder. Text); mpangilioLength = prodA + prodB + prodC; / * Nitagawanya vitanzi kwa biliver oprettet, zilizowekwa kwenye biti ya bidhaa zinazozalishwa na kutafutwa, na kutafutwa zaidi. * / kwa (int prod1A = 0; prod1A <prodA; prod1A ++) {order [ordrenummer, prod1A] = produktA; }

kwa (int prod1B = (prodA); prod1B <(prodB + prodA); prod1B ++) {order [ordrenummer, prod1B] = produktB; }

kwa (int prod1C = (prodA + prodB); prod1C 99)

{mkusanyiko wa joto = 0; } // Matumizi yake bora ya utengenezaji wa data. DBQuery ("Ingiza ndani ya` bestilteprod` (`Produkt A`,` Produkt B`, `Produkt C`) MAADILI (" + prodA + "," + prodB + "," + prodC + ")"); // Nyongeza yake juu ya uangalizi zaidi juu ya bidhaa zinazotengenezwa na mangler kwenye blive productrert, til databasen. DBQuery ("UPDATE` total` SET `manglende produkter` = (` manglende produkter` + ("+ (prodA + prodB + prodC) +")) WAPI 1 "); }

// Ninazuia utupu wa hali ya chini na nafasi ya kufanya kazi, lagt ind.

utupu wa kibinafsi myWorker_DoWork (mtumaji wa vitu, Tukio la Mikutano e) {wakati (ni kweli) {/ * Tutaangalia saa moja kwa moja kwenye orodha ya watu, lakini wakati huo huo unapoendelea. */ Hali(); wakati (sendOrder. Sum ()! = 0) {/ * Ninatambua kitanzi kwa njia ya kitanzi, saa moja kwa moja itafunguliwa kwa Nambari Kuu (i) itafikia mwisho wa kutafakari juu ya mpango wa kutolea huduma, lakini pia. Variablen (i) kigger på den pågældende række i arrayet, der på nuværende tidspunkt arbejdes i. Shimo kigger na kolonnen, ser hvilket tal der står i kolonnen. Tallet bliver inafanya kazi, na inaweza kutumika katika kutofautisha video kwa kila siku, na kwa muda mrefu tuwe na maoni juu ya kitu kimoja. Kwa hivyo, tutaweza kuuza bidhaa kwa kupakia kwa data. Endeni ikiwa mkombozi unapewa kommunikationen kwa Arduinoen åbnet, na mtu atapewa malipo kwa mtu anayetuma Arduinoen. * / kwa (int i = 0; i <sendOrder. Urefu; i ++) {Hali (); sp. BaudRate = 9600; sp. PortName = "COM4"; Sp. Fungua (); sp. Andika (SendOrder . ToString ()); // Programu inaweza kutekelezwa ikiwa taarifa, taarifa kamili, habari za habari na huduma zitatekelezwa (i). ikiwa (SendOrder == 1) {prodType = "Produkt A"; } kingine ikiwa (SendOrder == 2) {prodType = "Produkt B"; } kingine ikiwa (SendOrder == 3) {prodType = "Produkt C"; }

kutumaOda = 0;

// Nakala ya kutangaza kuwa inapeana mpangilio wa samlet 0, bliver de udførte produkter uploadet in databasen, and komunikationen til Arduinoen, bliver lukket. ikiwa (SendOrder. Sum () == 0) {DBQuery ("INSERT INO` udforte` (`Produkt type`) VALUES ('" + prodType + "')");

DBQuery ("UPDATE` total` SET `productret produkter` = (` productret produkter` + 1), `manglende produkter` = (` manglende produkter` - 1) ");

sp. Funga ();

kuvunja; } / * Wafanyikazi wake katika Arduinoen er færdig med ordren. Der kvitteres med et "done". Wakati huo huo, njia mpya ya kupigia debe itatumiwa kwenye kikundi kupakia kwenye orodha ya watu kwa Grunden, lakini wakati huo huo watu watakuwa wamepata nafasi ya kufanya hivyo. * / sp. ReadTo ("Imefanywa");

DBQuery ("INSERT IN` udforte` (`Produkt type`) VALUES ('" + prodType + "')");

DBQuery ("UPDATE` total` SET `productret produkter` = (` productret produkter` + 1), `manglende produkter` = (` manglende produkter` - 1) ");

sp. Funga (); Hali(); }} // Ninachambua kitanzi kwa njia ya kitanzi kwa njia mpya ya kutafakari, na kwa sababu hiyo inaweza kutekelezwa kwa njia ya maombi (kwa muhtasari wa kutangazwa kwa orodha ya watu). kwa (int i = 0; i <order. GetLength (0); i ++) {int test = order [i, 0]; ikiwa (mtihani! = 0) {kwa (int j = 0; j <100; j ++) {sendOrder [j] = kuagiza [i, j];

agizo [i, j] = 0;

}

kuvunja; }}

}

} / * Her er oprettet and void ved navn "Hali". Tambua kwa sababu ya fuvu la kichwa kwenye skrive de samme linjer kode flere steder. Mimi huamua mtu kuwa na maoni juu ya "Hali" inayofaa kwa sababu hakuna utaftaji wa nafasi ya kutokukamilika, kutafutiliwa mbali, na kutafakari. * / Hali ya utupu wa kibinafsi () {/ * Mtu wake wa MySQL anayekataza kazi, ataona orodha mpya ya orodha ya jumla ya simu, na ataangalia orodha ya watu. * / MySqlConnection con = mpya MySqlConnection (connectionString); Fungua (); kamba str = "chagua * kutoka jumla"; MySqlCommand com = mpya MySqlCommand (str, con); Msomaji wa MySqlDataReader = com. ExecuteReader (); // Kufanya kazi kwa siku kwa kufanya Baggrundskoden kwenye Programu ya CPU, na kwa hivyo tutaweza kupumzika tena. msomaji Soma (); MissingProd. Invoke ((MethodInvoker) mwakilishi {// Her bliver de manglende produkter, samt produkter der er lavet, skrevet ud på applikationen. MissingProd. Text = "manglende produkter:" + (msomaji ["manglende produkter"]. ToString () OrdereProd. Text = "produkter lavet:" + (msomaji ["productret produkter"]. ToString ());}); // Her bliver der implementere hvad procentbaren, skal udfyldes efter. ProcenteDone. Lebo. ikiwa (int. Parse (msomaji ["productret produkter"]. ToString ())! = 0) {// Mtu wake anayetengeneza bidhaa na bidhaa kutoka kwa mtu anayetengeneza bidhaa. få det ud i procent. ProcenteDone. Text = Math. Round ((kuelea. Parse (msomaji ["productret produkter"]. ToString ()) /(float. Parse (kusoma (kuelea. Parse (msomaji ["manglende produkter"]. ToString ())) * * 100). ToString (););}} mwingine {ProcenteDone. Text = "0%";}}); // Her lukkes MySQL forbindelsen. reader. Close (); con. Close ();} // I dette batili bliver alle produkter, der er productret på den valgte dato, lagt ud på a pplikationen. utupu wa kibinafsi Vis_Produkter_Click_1 (mtumaji wa vitu, EventArgs e) {string date = dateTimePicker1. Value. ToString () Ondoa (10);

tarehe = tareheTimePicker1. Text;

swala ya kamba = "CHAGUA` Produkt type`, `Tid` FROM udforte WHERE Tid> = '" + date + "00:00:00' NA Tid <= '" + tarehe + "23:59:59'"; kutumia (connection = new MySqlConnection (connectionString)) ukitumia (MySqlCommand command = new MySqlCommand (swala, unganisho)) ukitumia (MySqlDataAdapter adapta = mpya MySqlDataAdapter (amri)) {DataTable prodTable = DataTable mpya (); adapta Jaza (prodTable);

dataGridView1. DataSource = prodTable;

}

} // mimi hupunguza utupu wa bliver MySQL. Shina la kutumbukiza kwenye vifaa vya kuzuia beliver, mwongozo, na uzima. utupu wa kibinafsi DBQuery (kamba cmd) {swala ya kamba = cmd; kutumia (connection = new MySqlConnection (connectionString)) ukitumia (MySqlCommand command = new MySqlCommand (swala, unganisho)) {connection. Open ();

amri. ExecuteScalar ();

unganisho Funga ();

} } } }

Hatua ya 6: Materialeliste

1 stk. Arduino Uno

1 stk. Micro servo SG90 9g

Hatua ya 7: Fobindelsesdiagram / I / O Lliste

Fobindelsesdiagram / I / O Lliste
Fobindelsesdiagram / I / O Lliste

Servomotor:

+ = Upya

- = Panga

Ishara = Grøn

Ilipendekeza: