Mundarija:

EAL - Industriel Internet - Fabrikshal: 7 qadam
EAL - Industriel Internet - Fabrikshal: 7 qadam

Video: EAL - Industriel Internet - Fabrikshal: 7 qadam

Video: EAL - Industriel Internet - Fabrikshal: 7 qadam
Video: Erfindungen aus Fulda - der erste Kleinwagen | Pioniere in Fulda | erlebnis hessen | doku 2024, Noyabr
Anonim
EAL - Industriel Internet - Fabrikshal
EAL - Industriel Internet - Fabrikshal
EAL - Industriel Internet - Fabrikshal
EAL - Industriel Internet - Fabrikshal
EAL - Industriel Internet - Fabrikshal
EAL - Industriel Internet - Fabrikshal

Ishlab chiqarish tizimlari 4,0 dan ortiq avtomatlashtirilgan tizimni ishga tushirgandan so'ng, siz uni o'chirib qo'yishingiz mumkin. Men buni juda yaxshi bilaman, lekin men simulyatsiya qilaman. Dvigatellar va dvigatellar bir vaqtning o'zida ishlaydi. Ma'lumotni uzatish, RFID -ni o'chirish va o'chirish uchun mo'ljallangan. Ma'lumotlar bazasi va Wampserver ma'lumotlar bazasi.

1 -qadam: RFID Kortlser

RFID Kortlser
RFID Kortlser
RFID Kortlser
RFID Kortlser

U RFID -ni o'chirib tashlaydi. Hensigten har bir narsani aniqlab olish mumkin emas, balki Arduino kodini ham biladi. Ma'lumotni o'chirish va o'chirishdan oldin, bu raqamlar va raqamlar aniqlanmagan bo'lsa-da, siz hech kimga ma'lumot berolmaysiz.

Ma'lumotni uzatish uchun hech qanday imkoniyat yo'q. Ma'lumotni o'chirib qo'yish, hech qanday ma'lumotni o'chirish, o'chirish va o'chirish kabi hech narsa yo'q.

Kechirasiz, siz loyihani amalga oshirishingiz mumkin. Aniqrog'i, siz port portlarini, shuningdek, Arduino Uno -ni loyihalashtirishingiz mumkin. Bu erda siz Arduino -ni o'rnatishingiz mumkin, lekin Windows Forms -ni ishlating. Men hamma narsani yaxshi bilaman.

2 -qadam: servomotor (yuk)

Servo motor (yuk)
Servo motor (yuk)
Servo motor (yuk)
Servo motor (yuk)
Servo motor (yuk)
Servo motor (yuk)

Men xizmat ko'rsatuvchi dvigatelni, Arduino Uno -ni boshqaraman. Ishlab chiqaruvchi va ishlab chiqaruvchi, bu ishlab chiqaruvchi va ishlab chiqaruvchilar. Ma'lumotlar, shuningdek, MySQL ma'lumotlar bazasi va boshqa ma'lumotlar to'plami mavjud. Mashinaning joylashuvi aniqlanishi mumkin. Har qanday pozitsiya simsiz ishlab chiqaruvchi tomonidan ishlab chiqilgan. Bu erda hech qanday muammo yo'q, chunki u hech qanday holatda ishlamaydi. Erkak kishi, WPF ilovasi orqali, mashinani ishga tushiradi. Ishlab chiqaruvchi MySQL ma'lumotlar bazasini yaratadi.

3 -qadam: MySQL ma'lumotlar bazasi - Indhold

MySQL ma'lumotlar bazasi - indhold
MySQL ma'lumotlar bazasi - indhold
MySQL ma'lumotlar bazasi - indhold
MySQL ma'lumotlar bazasi - indhold
MySQL ma'lumotlar bazasi - indhold
MySQL ma'lumotlar bazasi - indhold

Men MySQL ma'lumotlar bazasini ochaman. Qo'l ushlagichini ushlab turganda, siz o'zingizni yaxshi bilasiz. Qidiruv jadvallari ishlab chiqaruvchi tomonidan ishlab chiqilgan. Ishlab chiqaruvchi, ishlab chiqaruvchi, ishlab chiqaruvchi va ishlab chiqaruvchi kompaniyalar bilan maslahatlashdi. Ishlab chiqaruvchi va ishlab chiqaruvchi tomonidan ishlab chiqarilgan mahsulotlarni ishlab chiqaruvchi va ishlab chiqaruvchi tomonidan ishlab chiqilgan. Ma'lumotlar bazasi va Windows -ning turli xil shakllari mavjud. Ma'lumotlar almashinuvini o'chirib tashlamoqchi bo'lmaganda, ma'lumotlar bazasi va ma'lumotlar bazasi tegishli ma'lumotlarga ega. Ma'lumotlar bazasi ma'lumotlar bazasi ma'lumotlarini uzatish uchun yuboriladi. Butun sonlar, String, ma'lumotlar bazasi va ma'lumotlar bazasi. Ma'lumotlar bazasi va TimeStamp -ni o'chirib qo'yish kerak.

4 -qadam: Arduino Kode

#qo'shing

MyServo xizmat ko'rsatish;

int servoPos; char produkt = '0'; void setup () {myServo.attach (3); // Serial kommunikatsiya Serial.begin boshlanadi (9600); } void loop () {// L serialsning fra ketma -ket port produkt = Serial.read (); // Buyurtmachining buyrug'i (ishlab chiqarish) {// Mahsulot A (1) va "1" holatlari: myServo.write (50); kechikish (1000); myServo.write (0); kechikish (1000); Serial.println ("Bajarildi"); tanaffus; // Ishlab chiqarish B (2) "2" holati: myServo.write (100); kechikish (1000); myServo.write (0); kechikish (1000); Serial.println ("Bajarildi"); tanaffus; // Produkt C (3) "3" ishi: myServo.write (150); kechikish (1000); myServo.write (0); kechikish (1000); Serial.println ("Bajarildi"); tanaffus; }}

5 -qadam: Windows formalarini qo'llash

System. Collections. Generic yordamida; System. ComponentModel -dan foydalanish; System. Data -dan foydalanish; System. Drawing -dan foydalanish; System. Linq -dan foydalanish; System. Text -dan foydalanish; System. Threading. Tasks -dan foydalanish; System. Windows. Forms -dan foydalanish; System. Collections -dan foydalanish; System. IO. Ports -dan foydalanish; MySql -dan foydalanish; MySql. Data. MySqlClient -dan foydalanish;

WindowsFormsApp2 nomlar maydoni

{ochiq qismli sinf Form1: Forma { /* Men hamma narsani bilaman. Bu MySQL -serverlar uchun MySqlConnection -ning eng yuqori darajadagi ma'lumotlarini o'z ichiga oladi. String (connectionString) parolni, parolni va parolni aniqlab bergandan so'ng, ma'lumotlar bazasini o'chirib tashlaydi. U butun sonni o'z ichiga oladi va men 2d qator (orde). Qachonki, bu mahsulot ishlab chiqaruvchi va ishlab chiqaruvchi tomonidan ishlab chiqilgan. Ma'lumotni aniqlang va uni aniqlang. Sinflarni (BackgroundWorker) o'qishni boshlang. O'yin dasturini o'chirib tashlaganingizdan so'ng, dasturni o'chirib qo'ying. Men aniq bir narsani aniqlab beraman, bu sizning xohishingizga javob beradi. */ MySqlConnection ulanishi; simli aloqaString;

shaxsiy int ordrenummer;

private int [,] order = new int [100, 100]; private int SendOrder = new int [100]; xususiy satr prodType;

SerialPort sp = yangi SerialPort ();

private BackgroundWorker myWorker = new BackgroundWorker ();

ommaviy shakl1 ()

{InitializeComponent (); // Uning bliveri String (connectionString) ni aniqlaydi. connectionString = "server = 192.168.1.100; userid = root; pwd = langeland; ma'lumotlar bazasi = arduino;"; /* "MyWorker" har xil vaqt oralig'ida turli xil dasturlarni yaratdi. */ myWorker. DoWork += yangi DoWorkEventHandler (myWorker_DoWork); myWorker. WorkerReportsProgress = rost; myWorker. WorkerSupportsCancellation = rost; // Uning hayoti o'z -o'zidan yo'q bo'lib ketdi. myWorker. RunWorkerAsync (); // Ma'lumotlar aniqlanganidan so'ng, u formatlangan. U MySQL ma'lumotlar bazasi uchun eng yaxshi formatdir. dateTimePicker1. CustomFormat = "yyyy-MM-dd"; dateTimePicker1. Format = DateTimePickerFormat. Custom; }

shaxsiy bo'shliq Afgiv_Ordre_Click (ob'ekt yuboruvchi, EventArgs e)

{ /* Bu har qanday ma'lumotni o'z ichiga oladi, lekin u bekor qilingan. O'n sonli raqamlar aniqlanganda, bu erda hamma narsa yoziladi. Ma'lumotni o'chirib tashlamaslik kerak, chunki men bu dasturni ishga tushirganman. Mana, bir necha oydan buyon, har bir kishi o'z vazifasini bajaradi. */ 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; /* Men halqalarni o'chirib tashlayman, ular ishlab chiqaruvchi va ishlab chiqaruvchilar tomonidan ishlab chiqariladi. */ for (int prod1A = 0; prod1A <prodA; prod1A ++) {order [ordrenummer, prod1A] = produktA; }

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

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

{ordrenummer = 0; } // Ma'lumotlar bazasi eng yaxshi ma'lumotlarga ega. DBQuery ("INSERT INTO` bestilteprod` "(` Produkt A`, `Produkt B`,` Produkt C`) VALUESI (" + prodA +", " + prodB +", " + prodC +") "); // Ma'lumotlar bazasi ishlab chiqaruvchilari va ishlab chiqaruvchilarining asosiy vazifalari. DBQuery ("UPDATE` total` SET `manglende produkter` = (` manglende produkter` +(" +(prodA +prodB +prodC) +")) WHERE 1 "); }

// Men bo'sh joyni o'chirib tashlagan bo'lsam, men o'zimga ishonaman.

private void myWorker_DoWork (ob'ekt yuboruvchi, EventArgs e) {while (rost) { /* Umumiy ma'lumotni o'chirib qo'ying, bu esa, albatta, pastadir. */ Holat(); while (SendOrder. Sum ()! = 0) { /* Men bir necha sonli ma'lumotlarni topdim, shuning uchun ular butun vaqt davomida aniqlanadi, lekin bu erda hamma narsa o'chiriladi. Variablen (i) bir necha kun oldin va keyin o'z navbatida, bu erda ham har bir narsani o'z ichiga oladi. Bu erda siz o'zingizning shaxsiy ma'lumotlaringizni topishingiz mumkin. Tallet blyverni to'liq yo'q qilish kerak, lekin bu erda ma'lumotlar almashinuvini o'zgartirishingiz mumkin, keyin esa 0 dan oshib ketadi. Agar siz Arduino bilan aloqa o'rnatgan bo'lsangiz, siz Arduino -ga qo'ng'iroq qilishingiz mumkin. */ for (int i = 0; i <SendOrder. Length; i ++) {Status (); sp. BaudRate = 9600; sp. PortName = "COM4"; sp. Open (); sp. Write (SendOrder . ToString ()); // Agar dasturlar o'chirilsa, ular o'chiriladi, lekin ular o'zgaradi (men). if (SendOrder == 1) {prodType = "Produkt A"; } if if (SendOrder == 2) {prodType = "Produkt B"; } if if (SendOrder == 3) {prodType = "Produkt C"; }

SendOrder = 0;

// Bu erda hech qanday ma'lumot yo'q, lekin ular ma'lumotlar bazasi va ma'lumotlar bazasini yuklashda, shuningdek, ma'lumotlarni to'plashda va o'chirishda yordam beradi. if (yuborishOrder. Sum () == 0) {DBQuery ("INFERT INTO` udforte` ("Produkt type`) VALUES ('" + prodType + "')"));

DBQuery ("UPDATE` total` SET` prodyuser ishlab chiqaruvchi = "(prodyuser ishlab chiqaruvchisi + 1), manglende produkter` = (` manglende produkter` - 1) ");

sp. Close ();

tanaffus; } /* Xotin -qizlar, Arduinoen er færdig med ordren. Mana, "bajarildi". Ma'lumotlar bazasi, ma'lumotlar bazasi va ma'lumotlar bazasi yuklanmagan bo'lsa, ma'lumotlar bazasi va ma'lumotlar bazasi o'chirilgan bo'lsa ham, bu ma'lumotni o'chirib qo'yish mumkin. */ sp. ReadTo ("Bajarildi");

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

DBQuery ("UPDATE` total` SET` prodyuser ishlab chiqaruvchi = "(ishlab chiqaruvchi prodyuseri + 1), manglende produkter` = (` manglende produkter` - 1) ");

sp. Close (); Holat(); }} // Men aniq bilmaymanki, men hech narsani bilmayman, lekin hech qanday muammo yo'q (menimcha, bu har bir kishi uchun). for (int i = 0; i <order. GetLength (0); i ++) {int test = buyurtma [i, 0]; if (test! = 0) {uchun (int j = 0; j <100; j ++) {yuborishOrder [j] = buyurtma [i, j];

tartib [i, j] = 0;

}

tanaffus; }}

}

} /* U "Status" ni bekor qildi. Ma'lumotni o'chirish uchun skulle -da, shuningdek, bir necha marta yozing. Men "Status" ni o'chirib tashlaganimdan so'ng, men bo'sh joyni bo'shatib qo'ydim, keyin men o'zimning shaxsiy ma'lumotlarimni va boshqa narsalarni topdim. * / private void Status () { /* U MySQL -ni o'chirib tashlagan bo'lsa -da, u umumiy hisob -kitoblarni o'chirib tashlaydi. */ MySqlConnection con = yangi MySqlConnection (connectionString); ochiq. Ochiq (); string str = "jamidan * ni tanlang"; MySqlCommand com = yangi MySqlCommand (str, con); MySqlDataReader o'quvchi = com. ExecuteReader (); // O'chirish protsessorlari CPU protsessorlari uchun eng yaxshi vazifadir. o'quvchi. Read (); MissingProd. Invoke ((MethodInvoker) vakili {// Ishlab chiqaruvchi, ishlab chiqaruvchi va ishlab chiqaruvchi. MissingProd. Text = "manglende produkter:" + (o'quvchi ["manglende produkter"]. ToString ()); OrdereProd. Text = "produkter lavet:" + (o'quvchi ["prodyuser produkter"]. ToString ());}); // Uning dasturiy ta'minotini ishga tushirish vaqti va davomi. ProcenteDone. Invoke ((MethodInvoker) vakili {// Shaxsiy ma'lumotlar va men SQL -ni "ishlab chiqaruvchi ishlab chiqaruvchi" ni o'chirib qo'yadi, agar u to'liq bo'lmasa, "0%" tugmachasini bosing. yorliq. if (int. Parse (o'quvchi ["prodyuser produkter"]. ToString ())! = 0) {// Uning ishlab chiqaruvchisi va ishlab chiqaruvchisi, shuningdek, manglende produkter. ProcenteDone. Text = Math. Round ((float. Parse (o'quvchi ["prodyuser ishlab chiqaruvchi"]. ToString ()) /(float. Parse(reader["produceret produkter "]. ToString ()) + float. Parse (o'quvchi ["manglende produkter"]. ToString ()))) * 100). ToString (),);} boshqa {ProcenteDone. Text = "0%";}}); // MySQL -ni o'chirib qo'yish mumkin. Read. Close (); con. Close ();} // Men ishlab chiqaruvchini bekor qildim. pa den valgte dato, lagt ud på a pplikationen. shaxsiy bo'shliq Vis_Produkter_Click_1 (ob'ekt yuboruvchi, EventArgs e) {string date = dateTimePicker1. Value. ToString (). O'chirish (10);

sana = dateTimePicker1. Text;

string query = "SELECT` Produkt type`, `Tid` FROM udforte WHERE Tid> = '" + date + "00:00:00' AND Tid <= '" + date + "23:59:59'"; yordamida (ulanish = yangi MySqlConnection (connectionString)) yordamida (MySqlCommand buyrug'i = yangi MySqlCommand (so'rov, ulanish))) yordamida (MySqlDataAdapter adapteri = yangi MySqlDataAdapter (buyruq)) {DataTable prodTable = new DataTable (); adapter. Fill (prodTable);

dataGridView1. DataSource = prodTable;

}

} // Men MySQL -ni o'chirib tashlaganman. Mantiqlarni o'chirib qo'yish, o'chirish va o'chirish mumkin. shaxsiy bo'shliq DBQuery (string cmd) {string so'rovi = cmd; yordamida (ulanish = yangi MySqlConnection (connectionString)) yordamida (MySqlCommand buyrug'i = yangi MySqlCommand (so'rov, ulanish)) {connection. Open ();

command. ExecuteScalar ();

ulanish. Close ();

} } } }

6 -qadam: Materiallar

1 stk. Arduino Uno

1 stk. Mikro servo SG90 9g

7 -qadam: Fobindelsesdiagram / I / U Lliste

Fobindelsesdiagram / I / U ro'yxati
Fobindelsesdiagram / I / U ro'yxati

Servo motor:

+ = Rod

- = Saralash

Signal = Gron

Tavsiya: