Mundarija:
- 1 -qadam: RFID Kortlser
- 2 -qadam: servomotor (yuk)
- 3 -qadam: MySQL ma'lumotlar bazasi - Indhold
- 4 -qadam: Arduino Kode
- 5 -qadam: Windows formalarini qo'llash
- 6 -qadam: Materiallar
- 7 -qadam: Fobindelsesdiagram / I / U Lliste
Video: EAL - Industriel Internet - Fabrikshal: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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
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)
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
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
Servo motor:
+ = Rod
- = Saralash
Signal = Gron
Tavsiya:
EAL - Rc Car -da sanoat 4.0 GPS ma'lumotlarini yig'ish: 4 qadam
EAL - Industry 4.0 Rc Car -da GPS ma'lumotlarini yig'ish: Ushbu yo'riqnomada biz RC avtomashinasida GPS modulini qanday o'rnatishimiz va yig'ilgan ma'lumotlarni osonlikcha kuzatish uchun veb -sahifaga joylashtirishimiz haqida gaplashamiz. Biz oldindan RC avtomashinasini qanday yasaganimizni ko'rsatma qildik, uni bu erda topishingiz mumkin. Bu foydalanadi
EAL - O'rnatilgan - kombinatsiyalangan qulf: 4 qadam
EAL- O'rnatilgan- kombinatsiyalangan qulf: Bu loyiha men EALda 2.1 C dasturlash fanini tanlash uchun qilgan bitta maktab loyihasi. Men birinchi marta Arduino loyihasini va C-dasturini yaratdim. Bu kombinatsiyalangan qulfni taqdim etadigan loyiha. Kombinatsiyalangan qulf
EAL - O'rnatilgan dasturlash: Candy mikser 1000: 9 qadam
EAL - O'rnatilgan dasturlash: Candy Mixer 1000: Arduino -dagi loyihamiz uchun biz shakarlamalar uchun mikser yasashga qaror qildik. Gap shundaki, foydalanuvchi tugmachani bosishi mumkin, shundan so'ng dvigatellar konfetni kosaga tashlay boshlaydi va dastur o'z ishini tugatgandan so'ng to'xtaydi
EAL- O'rnatilgan yopiq iqlim: 5 qadam
EAL- O'rnatilgan yopiq iqlim: Bizning maktab loyihamiz uchun bizga arduino-ni avtomatlashtirilgan tizimga qo'shish vazifasi yuklatilgan. Biz xonadagi harorat, namlik va desibel darajasini sezadigan yopiq iqlim sensori yasashni tanladik. Biz kabinetda bir nechta teshik ochdik,
EAL - SmartStorage: 3 qadam
EAL - SmartStorage: Bu Kasper Borger Tuliniusning SmartStorage loyihasi