Obsah:

EAL - Priemyselný internet - Fabrikshal: 7 krokov
EAL - Priemyselný internet - Fabrikshal: 7 krokov

Video: EAL - Priemyselný internet - Fabrikshal: 7 krokov

Video: EAL - Priemyselný internet - Fabrikshal: 7 krokov
Video: Кто же такие Венецианцы на самом деле и откуда у них взялся сильнейший флот средневековья? 2024, November
Anonim
EAL - Priemyselný internet - Fabrikshal
EAL - Priemyselný internet - Fabrikshal
EAL - Priemyselný internet - Fabrikshal
EAL - Priemyselný internet - Fabrikshal
EAL - Priemyselný internet - Fabrikshal
EAL - Priemyselný internet - Fabrikshal

Odošlite odozvu na najnovší princíp implementácie a automatizácie systému. Každý deň mám k dispozícii jednu z najlepších simulácií výroby. Mám k dispozícii servomotor, ako aj pár 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. Viac informácií nájdete na nasledujúcom obrázku. Bližšie informácie o stĺpci môžu mať za následok zvýšenie počtu snímok, ako aj ich zvýšenie.

K dispozícii sú všetky možnosti dodania, ako aj ďalšie možnosti výroby. 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. Viac informácií nájdete na oficiálnom portáli servera serie port, na ktorom môžete projektovať Arduino Uno. Mnoho portov, skal a brugg do Arduinoens ordrer, deň vil få od vors Windows Forms applikation. Poznamenávam si viac ako jednu vec.

Krok 2: Servomotor (príloha)

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

Ponúkam servomotor, ako aj Arduino Uno. Každý deň a viac producentov skellige produkcie. Objednávky sú dostupné v jednej palete a sú k dispozícii v databáze MySQL. Motorové kanóny udávajú polohu polohovadla. Symbolizátor polohy polohy predného nárazníka. K dispozícii sú všetky typy motorov, ktoré sú k dispozícii v ľubovoľnej polohe, alebo v inej polohe. Podrobnejšie informácie o človeku získate prostredníctvom aplikácií WPF, ktoré vám môžu poskytnúť ďalšie pokyny. Alternatívne môžete vytvárať veľké množstvo databáz MySQL.

Krok 3: Databáza MySQL - zadržte

Databáza MySQL - Indhold
Databáza MySQL - Indhold
Databáza MySQL - Indhold
Databáza MySQL - Indhold
Databáza MySQL - Indhold
Databáza MySQL - Indhold

Databázy MySQL sú k dispozícii iba v jednom balíku. Držiteľ jedného dňa bude mať najlepšiu produkciu a najlepšie zvládne. Všetky údaje sú uvedené v produkte. Každý deň, a viac informácií o členovi, musí dohliadať na svoju produkciu, produkciu a výrobu. Väčšina z nich produkuje jednu alebo druhú produkciu. Bližšie informácie o aplikácii Windows Forms nájdete v nasledujúcom texte: Bližšie informácie nájdete v nasledujúcej tabuľke, v ktorej môžete odosielať správy do Arduinoen, do ďalších skupín, alebo do príslušných databázových databáz. Posielajte všetky údaje do databáz. En Integer, en String, some bliver kaldt en VarChar, and databasen. Der er også et TimeStamp, Det er en indilling, der er tilføjet i databasen.

Krok 4: Arduino Kode

#zahrnúť

Servo myServo;

int servoPos; char produkt = '0'; neplatné nastavenie () {myServo.attach (3); // Spustí sa sériová komunikácia Serial.begin (9600); } void loop () {// Viac informácií o sériovom porte produkt = Serial.read (); // Godkendelse af ingående ordrer switch (produkt) {// Produkt A (1) udføres i daily case case '1': myServo.write (50); oneskorenie (1000); myServo.write (0); oneskorenie (1000); Serial.println („Hotovo“); prestávka; // Produkt B (2) udføres i denný prípad „2“: myServo.write (100); oneskorenie (1000); myServo.write (0); oneskorenie (1000); Serial.println („Hotovo“); prestávka; // Produkt C (3) udføres i denný prípad prípad '3': myServo.write (150); oneskorenie (1000); myServo.write (0); oneskorenie (1000); Serial.println („Hotovo“); prestávka; }}

Krok 5: Aplikácia Windows Forms

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

priestor názvov WindowsFormsApp2

{public partial class Form1: Form { /* I daily class bliver all all public variabler oprettet. Ponúkame tri triedy (MySqlConnection), ktoré sa spájajú so skalármi, pretože v súčasnosti nie sú k dispozícii pre servery 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). Viac informácií nájdete na stránke nižšie ako najlepšia produktivita a produktivita. Viac informácií o tom, ako ju Arduinoen bliver også definuje. Der bliver også oprettet en Class (BackgroundWorker). Môžete si vybrať z bohatej programovej ponuky, ktorá vám ponúka široký sortiment vreciek. I dette tilfælde er det brugbart, da der kan blive oprettet nye ordrer, med korte mellemrum. */ Pripojenie MySqlConnection; reťazec connectionString;

súkromný int adrenalín;

private int [,] order = new int [100, 100]; private int sentOrder = new int [100]; súkromný reťazec prodType;

SerialPort sp = nový SerialPort ();

súkromný BackgroundWorker myWorker = nový BackgroundWorker ();

verejný formulár1 ()

{InitializeComponent (); // Jej bliver obsahuje definíciu String (connectionString). connectionString = "server = 192.168.1.100; userid = root; pwd = langeland; database = arduino;"; /* Jej premenná „myWorker“bola k dispozícii v rôznych jazykových verziách. */ myWorker. DoWork += nový DoWorkEventHandler (myWorker_DoWork); myWorker. WorkerReportsProgress = true; myWorker. WorkerSupportsCancellation = true; // Jej bliver sel baggrundsgennemløbet eksikveret. myWorker. RunWorkerAsync (); // Jej formát je definovaný ako formát dátumu. Jej formát je najlepší po databáze MySQL. dateTimePicker1. CustomFormat = "rrrr-MM-dd"; dateTimePicker1. Format = DateTimePickerFormat. Custom; }

súkromné neplatné Afgiv_Ordre_Click (odosielateľ objektu, EventArgs e)

{ /* Her er der oprettet nogle variabler, der kun bliver brugt i dette unte void. K dispozícii sú všetky integracie skalných produktov, ktorých výsledkom je celý príbeh. De næste tre er oprettet for at kunne skrive det antal man ønsker, ind i applikationen. Môžete si vybrať jednu z nasledujúcich možností: */ 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 dĺžka objednávky = prodA + prodB + prodC; /* Disse for loops bliver køen oprettet, således at ordrene bliver productionet i den rækkefølge, de er bestilt i. */ pre (int prod1A = 0; prod1A <prodA; prod1A ++) {objednávka [alebo adrenalín, prod1A] = produktA; }

pre (int prod1B = (prodA); prod1B <(prodB+prodA); prod1B ++) {objednávka [alebo adrenalín, prod1B] = produktB; }

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

{alebo adrenalín = 0; } // Jej najlepšia produkcia a tvorba databáz. DBQuery ("VLOŽIŤ DO` bestilteprod` (`Produkt A`,` Produkt B`, `Produkt C`) HODNOTY (" + prodA + "," + prodB + "," + prodC + ")"); // Jej informácie o produkte a preklade z blive producentert, do databázy. DBQuery ("UPDATE` total` SET `manglende produkter` = (` manglende produkter` +(" +(prodA +prodB +prodC) +")) WHERE 1 "); }

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

private void myWorker_DoWork (odosielateľ objektu, EventArgs e) {while (true) { /* Så længe at summen af den afsendte ordre ikke er lig med 0, vil dette while loop køre. */ Postavenie(); while (sendingOrder. 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. Variablen (i) kigger på den pågældende række i arrayet, der på nuværende tidspunkt arbejdes i. Každý deň a v koloniach, ale hlavne v koloniach. Tl. Ak je to možné, komunikujte s Arduinoenom ešte dlho, alebo si dajte záležať na odoslaní Arduinoen. */ for (int i = 0; i <sentOrder. Length; i ++) {Status (); sp. BaudRate = 9600; sp. PortName = "COM4"; sp. Open (); sp. Write (sentOrder . 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"; }

odosielanieObjednávka = 0;

// Viac ako jeden súbor polí poskytovateľa 0, ktorý poskytuje množstvo dát a databáz, ako aj komunikácií do Arduinoen, 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. Close ();

prestávka; } /* Jej partneri sú na adrese Arduinoen er færdig med or adren. Der kvitteres med et „done“. Viac informácií nájdete na stránke, kde môžete sťahovať gangy do rôznych databáz, alebo si ich viac všímať. */ sp. ReadTo ("Hotovo");

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

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

sp. Close (); Postavenie(); }} // Zistil som, že počet slučiek sa oneskorí, kým sa nezastaví, kým sa nevyrovná, čo znamená, že počet dní, ktoré sa budú líšiť od 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];

poradie [i, j] = 0;

}

prestávka; }}

}

} /* Her er der oprettet et void ved navn "Status". Nechajte to čakať, kým sa vám to páči. Zistil som, že môžem získať viac informácií o stave „Stav“. * / private void Status () { /* Jej predplatiteľ MySQL zakázal viac, ako viac ako jednu tabuľku, ako aj celkový počet predošlých dní. */ MySqlConnection con = nový MySqlConnection (connectionString); con. Open (); reťazec str = "vybrať * z celkového počtu"; MySqlCommand com = new MySqlCommand (str, con); Čítačka MySqlDataReader = com. ExecuteReader (); // Väčšina funkcií je k dispozícii v Baggrundskoden v rámci CPU a CPU, ako aj v ďalších kánoch. čítačka. Čítať (); MissingProd. Invoke (((MethodInvoker) delegát)); OrdereProd. Text = "produkter lavet:" + (reader ["producentet produkter"]. ToString ());}); // Jej implementácia môže viesť k percentuálnym stratám, skalné udfyldes efter. Delegát ProcenteDone. Invoke ((MethodInvoker) {// Hvis læseren i My SQL prohibindelsen læser at "produceet produkter ikke er lig med 0, bliver daily if statement eksikveret. Hvis det er lig med 0, bliver der udskrevet" 0%"skrevet til label. if (int. Parse (reader ["producentet produkter"]. ToString ())! = 0) {// Jej značkový producent produkčný a ospalý produkt. Výsledok závisí od veľkosti človeka, ktorý má ProcenteDone. Text = Math. Round ((float. Parse (reader ["producentet produkter"]. ToString ()) /(float. Parse(reader["produceret produkter "]. ToString ()) + float. Parse (reader ["manglende produkter"]. ToString ()))) * 100). ToString (); // Jej výsledný bliver oneskorí viac ako percentbaren. progressBar1. Value = Int32. Parse (ProcenteDone. Text);} else {ProcenteDone. Text = "0%";}}); // Jej lukkes MySQL prohibindelsen. reader. Close (); con. Close ();} // // Zistil som prázdny bliver alle produkter, der er producentet på den valgte dato, lagt ud på a pplikationen. private void Vis_Produkter_Click_1 (odosielateľ objektu, 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 (); adaptér. Fill (prodTable);

dataGridView1. DataSource = prodTable;

}

} // Zničím prázdny bliver MySQL zakázaného štýlu. Denne si môžete vybrať z mnohých obľúbených a obľúbených akcií. private void DBQuery (string cmd) {string query = cmd; using (connection = new MySqlConnection (connectionString)) using (MySqlCommand command = new MySqlCommand (query, connection)) {connection. Open ();

príkaz. ExecuteScalar ();

pripojenie. Zavrieť ();

} } } }

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

Servo motor:

+ = Rd

- = Zoradiť

Signál = Grøn

Odporúča: