Obsah:

EAL - průmyslový internet - Fabrikshal: 7 kroků
EAL - průmyslový internet - Fabrikshal: 7 kroků

Video: EAL - průmyslový internet - Fabrikshal: 7 kroků

Video: EAL - průmyslový internet - Fabrikshal: 7 kroků
Video: Industrial Internet of Things | Introduction to IIoT| RS Components 2024, Červenec
Anonim
EAL - Průmyslový internet - Fabrikshal
EAL - Průmyslový internet - Fabrikshal
EAL - Průmyslový internet - Fabrikshal
EAL - Průmyslový internet - Fabrikshal
EAL - Průmyslový internet - Fabrikshal
EAL - Průmyslový internet - Fabrikshal

Další informace naleznete v části Implementace a automatizace systému od Průmyslu 4.0. I den opgave, er der lavet en lille simulation af en fabrikshal. Používám servomotor, diody a diody. Udevendig, sidder der en RFID kortlæser, der skulle bruges til at lukke de relevante ind i fabrikshallen. Alt data, gemmes i en database i Wampserver.

Krok 1: RFID Kortlæser

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

Der er inkluderet en RFID kortlæser. Hensigten er at ud fra de id numre der er på det kort, og den brik der er med er skrevet ind i vores Arduino kode. Více informací naleznete na obrázku níže, kde se dozvíte více o tom, jak to funguje, nebo o co jde.

Více informací o dávce kortterů, které se mohou lišit. Lyset slukkes igen, når en enhanced, der er godkendt af kortlæseren, bliver deteteret.

Kortlæseren bliver fjernet fra projektet, da den kører seriel communikation. Znamená to, že můžete získat více portů pro více portů, jako je projekt Arduino Uno. Mnoho portů, skal a bruges až do Arduinoens ordrer, den vil få fra verores Windows Forms applikation. I den sammenhæng er lyset også fravalgt.

Krok 2: Servomotor (Anlæg)

Servomotor (Anlæg)
Servomotor (Anlæg)
Servomotor (Anlæg)
Servomotor (Anlæg)
Servomotor (Anlæg)
Servomotor (Anlæg)

Prodávám servomotor, stylizuji se do Arduino Uno. Skalsimulere et anlæg, der kan producent forskellige produkter. Objednávky jsou k dispozici v jedné paletě a jsou k dispozici v databázi MySQL. Motoren kanore ud i tre forskellige positioner. Symbolizátor polohy nahoře pro produkci skellige. Nejčastěji se jedná o produktivní produkt, který obsahuje více motorů, než je jeho poloha. Více informací o člověku získáte prostřednictvím aplikací WPF, které vám mohou nabídnout více než jeden motor. Další možnosti vytváření bliverů v databázi MySQL.

Krok 3: Databáze MySQL - Indhold

Databáze MySQL - zadržte
Databáze MySQL - zadržte
Databáze MySQL - Indhold
Databáze MySQL - Indhold
Databáze MySQL - Indhold
Databáze MySQL - Indhold

Databázi MySQL máme k dispozici. Držák na přední straně má nejlepší produkci, nejlepší náladu. Všechny tabulky obsahují všechny informace o produktech. Denně se zabýváme sdílením tabulek indenholder en oversigt over hvor mange produkter der er producentet, og hvor mange der mangler. Více informací o produktech, produkcích a produkcích. Z aplikace Windows Forms můžete vybírat různé typy aplikací, jako jsou Arduinoen a další databáze. Více informací naleznete v příručce, ve které můžete odesílat zprávy do Arduinoen, efterfølgende, vil den relevante data blive logget i databasen. Prohlédněte si všechny typy dat do databáze. En Integer, en String, some bliver kaldt en VarChar, i databasen. Der er også et TimeStamp, Det er en indstilling, der er tilføjet i databasen.

Krok 4: Arduino Kode

#zahrnout

Servo myServo;

int servoPos; char produkt = '0'; neplatné nastavení () {myServo.attach (3); // Sériová komunikace začíná Serial.begin (9600); } void loop () {// Více ze sériového portu produkt = Serial.read (); // Godkendelse af ingående ordrer switch (produkt) {// Produkt A (1) udføres i denní case case '1': myServo.write (50); zpoždění (1000); myServo.write (0); zpoždění (1000); Serial.println („Hotovo“); přestávka; // Produkt B (2) udføres i denne case case '2': myServo.write (100); zpoždění (1000); myServo.write (0); zpoždění (1000); Serial.println („Hotovo“); přestávka; // Produkt C (3) udføres i denní případ case '3': myServo.write (150); zpoždění (1000); myServo.write (0); zpoždění (1000); Serial.println („Hotovo“); přestávka; }}

Krok 5: Aplikace Windows Forms Applikation

pomocí System; using System. Collections. Generic; pomocí System. ComponentModel; pomocí System. Data; pomocí System. Drawing; pomocí System. Linq; pomocí System. Text; pomocí System. Threading. Tasks; pomocí System. Windows. Forms; pomocí System. Collections; pomocí System. IO. Ports; pomocí MySql; pomocí MySql. Data. MySqlClient;

obor názvů WindowsFormsApp2

{public partial class Form1: Form { /* I denní class bliver alle public variabler oprettet. Naše třída (MySqlConnection) má své skalní stránky, protože v současné době je zakázána služba MySQL. Ydermere er der oprettet en String (connectionString) den bruges til at certainere hvilken bruger der skal på og password, og hvilken database der er story om. Der er oprettet en integer, in et 2d array (orde). Grunden til deter at en ordrer can best from flere produktioner af et produkt, eller flere produkter. Seriál komunikuje a definuje ji Arduinoen. Der bliver også oprettet en Class (BackgroundWorker). Prohlédněte si nejlepší programovou nabídku, která vám pomůže s výběrem. I dette tilfælde er det brugbart, da der kan blive oprettet nye ordrer, med korte mellemrum. */ Připojení MySqlConnection; řetězec connectionString;

soukromý int adrenalin;

private int [,] order = new int [100, 100]; private int sentOrder = new int [100]; soukromý řetězec prodType;

SerialPort sp = nový SerialPort ();

soukromý BackgroundWorker myWorker = nový BackgroundWorker ();

veřejný formulář1 ()

{InitializeComponent (); // Její bliver má definici String (connectionString). connectionString = "server = 192.168.1.100; userid = root; pwd = langeland; databáze = arduino;"; /* Její bliver variablen "myWorker" seděl až do logge på hvor langt different bestillinger er i deres process. */ myWorker. DoWork += nový DoWorkEventHandler (myWorker_DoWork); myWorker. WorkerReportsProgress = true; myWorker. WorkerSupportsCancellation = true; // Její bliver sel baggrundsgennemløbet eksikveret. myWorker. RunWorkerAsync (); // Její formát je definován jako formát dat. Její další formát je nejlepší po databázích MySQL. dateTimePicker1. CustomFormat = "rrrr-MM-dd"; dateTimePicker1. Format = DateTimePickerFormat. Custom; }

soukromá prázdnota Afgiv_Ordre_Click (odesílatel objektů, EventArgs e)

{ /* Její variabilní nogle variabler, der kun bliver brugt i dette unte void. Všechny tři základní definice skalního produktového příběhu. De næste tre er oprettet for at kunne skrive det antal man ønsker, ind i applikationen. Dopřejte si více informací o tom, jak to udělat. */ 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); int orderLength = prodA + prodB + prodC; /* Disse for loops bliver køen oprettet, således at ordrene bliver producentet i den rækkefølge, de er bestilt i. */ for (int prod1A = 0; prod1A <prodA; prod1A ++) {order [ordrenummer, prod1A] = produktA; }

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

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

{ordrenummer = 0; } // Její nejlepší produkce a databáze. DBQuery ("VLOŽIT DO` bestilteprod` (`Produkt A`,` Produkt B`, `Produkt C`) HODNOTY (" + prodA + "," + prodB + "," + prodC + ")"); // Její přehledy a přehledy o produktech manglerů na blive producentert, til databasen. DBQuery ("UPDATE` total` SET `manglende produkter` = (` manglende produkter` +(" +(prodA +prodB +prodC) +")) WHERE 1 "); }

// Dette void er alt det kode der skal køre i baggrunden, lagt ind.

private void myWorker_DoWork (odesílatel objektů, EventArgs e) {while (true) { /* Så længe at summen af den afsendte ordre ikke er lig med 0, vil dette while loop køre. */ Stav (); while (sentOrder. Sum ()! = 0) { /* I dette for loop fungerer det således, at så længe den oprettede Integer (i) er mindre end længden på den afgivet ordre, vil det eksikvere. Různé (i) kigger på den pågældende række i arrayet, der på nuværende tidspunkt arbejdes i. Den kigger i kolonnen, ser hvilket tal der står i kolonnen. Tallet bliver eksikveret, og inden at variablen rykker videre til næste kolonne, bliver den pågældende kolonne sat til 0. De eksikverede produkter bliver uploadet to databasen. Pokud je to možné, komunikujte s Arduinoen do sítě, nebo si dejte pozor, abyste poslali do Arduinoen. */ for (int i = 0; i <sentOrder. Length; i ++) {Status (); sp. BaudRate = 9600; sp. PortName = "COM4"; sp. Open (); sp. Write (odesíláníOrder . ToString ()); // Programme der er i en af disse if commands, vil blive eksikveret, afhængig af hvilket tal fra et til tre der er i variablen (i). if (sentOrder == 1) {prodType = "Produkt A"; } else if (sentOrder == 2) {prodType = "Produkt B"; } else if (sentOrder == 3) {prodType = "Produkt C"; }

odesílací objednávka = 0;

// Více informací o tom, jak dávat, dávat a odebírat vzorky z pole 0, blower de udførte produkter uploadet i databasen, og communikationen til Arduinoen, bliver lukket. if (sentOrder. Sum () == 0) {DBQuery ("INSERT INTO` udforte` (`Typ produktu`) VALUES ('" + prodType + "')");

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

sp. Zavřít ();

přestávka; } /* Její milenci jsou na Arduinoen er færdig med ordren. Der kvitteres med et „done“. Více podrobností, více informací o gangu můžete nahrát do databáze nebo více, než se člověk může dozvědět více o svých produktech, které mohou přesáhnout do databáze. */ sp. ReadTo („Hotovo“);

DBQuery ("VLOŽIT DO` udforte` (`Typ produktu`) HODNOTY ('' + prodType +" ') ");

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

sp. Zavřít (); Postavení(); }} // Zjišťuji počet smyček, které jsou nyní zpožděny, dokud se nezmění, než kolik se točí (součet údajů o tom, co se točí 0). for (int i = 0; i <order. GetLength (0); i ++) {int test = order [i, 0]; if (test! = 0) {for (int j = 0; j <100; j ++) {sentOrder [j] = order [i, j];

pořadí [i, j] = 0;

}

přestávka; }}

}

} /* Her er der oprettet et void ved navn "Status". Dojde k dalšímu skluzu a skluzu na skrz de samme linjer kode flere steder. Zjišťoval jsem, že se mohu přesvědčit o stavu „Stav“Dette void er også inkluderet i det void, med det andet kode, der kører i baggrunden. Status* */ MySqlConnection con = nový MySqlConnection (connectionString); con. Open (); řetězec str = "vyberte * z celkového počtu"; MySqlCommand com = new MySqlCommand (str, con); Čtečka MySqlDataReader = com. ExecuteReader (); // Denní funkce se týkají především Baggrundskoden på en tråd i CPU'en, og en anden tråd til resten af koden. reader. Read (); MissingProd. Invoke ((MethodInvoker) delegát {// Her bliver de manglende produkter, samt produkter der er lavet, skrevet ud på applikationen. MissingProd. Text = "manglende produkter:" + (reader ["manglende produkter"]. ToString ()); OrdereProd. Text = "produkter lavet:" + (reader ["producentet produkter"]. ToString ());}); // Její implementace má procentní podíl, skal udfyldes efter. Delegát ProcenteDone. Invoke ((MethodInvoker) {// Hvis læseren i My SQL prohibindelsen læser at "produceret produkter ikke er lig med 0, bliver daily if statement eksikveret. Hvis det er lig med 0, bliver der udskrevet" 0%"skrevet til štítek. if (int. Parse (čtečka ["producentet produkter"]. ToString ())! = 0) {// Její značkovač produkuje a produkuje více než jeden výsledek. f det det i percent. ProcenteDone. Text = Math. Round ((float. Parse (reader ["producentet produkter"]. ToString ()) /(float. Parse(reader["produceret produkter "]. ToString ()) + float.);} else {ProcenteDone. Text = "0%";}}); // Její lukkes MySQL prohibindelsen. reader. Close (); con. Close ();} // // Dette bliver all produkter, der er producentet på den valgte dato, lagt ud på a pplikationen. private void Vis_Produkter_Click_1 (odesílatel objektů, EventArgs e) {string date = dateTimePicker1. Value. ToString (). Remove (10);

date = dateTimePicker1. Text;

string query = "SELECT` Typ produktu`, `Tid` FROM udforte WHERE Tid> = '" + date + "00:00:00' AND Tid <= '" + date + "23:59:59'"; using (connection = new MySqlConnection (connectionString)) using (MySqlCommand command = new MySqlCommand (query, connection)) using (MySqlDataAdapter adapter = new MySqlDataAdapter (command)) {DataTable prodTable = new DataTable (); adapter. Fill (prodTable);

dataGridView1. DataSource = prodTable;

}

} // Zničil jsem prázdný bliver MySQL zakázán styret. Den fungerer således at acquindelsen bliver åbnet, eksikverer, og lukkes. private void DBQuery (string cmd) {string query = cmd; using (connection = new MySqlConnection (connectionString)) using (MySqlCommand command = new MySqlCommand (query, connection)) {connection. Open ();

příkaz. ExecuteScalar ();

připojení. Zavřít ();

} } } }

Krok 6: Materialeliste

1 stk. Arduino Uno

1 stk. Micro servo SG90 9g

Krok 7: Fobindelsesdiagram / I / O Lliste

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

Servomotor:

+ = Řid

- = Seřadit

Signál = Grøn

Doporučuje: