Мазмуну:
- 1 -кадам: RFID Kortlæser
- 2 -кадам: Servomotor (Anlæg)
- 3 -кадам: MySQL маалымат базасы - Indhold
- 4 -кадам: Arduino Kode
- 5 -кадам: Windows Forms Applikation
- 6 -кадам: материалдар
- 7 -кадам: Fobindelsesdiagram / I / O Lliste
Video: EAL - Industriel Internet - Фабрикшал: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Колдонуу системасы 4.0 системасында автоматтык түрдө ишке киргизилген. Мен ачыктан -ачык, эң башкысы симуляцияны эң сонун фабрикал катары көрдүм. Мен сервомотор менен иштей алам. Колдонуу, RFID тизмесин түзүү, скульптуралар менен иштөө учурунда. Alt маалыматтар, gemmes жана Wampserver маалымат базасы.
1 -кадам: RFID Kortlæser
RFID тизмесин түзүү. Hensigten er ut de fra id idre numre der er på det kort, og den brik der er med med skrevet ind i vores Arduino kode. Төмөнкү маалымат боюнча дагы бир жолу караңыз: бул жерде ким жок болсо, ошончолук көп нерсе жок болот.
Эч нерсе жок болсо, мен дагы буларды берем. Lyset slukkes, башкача айтканда, жокко чыгарылган жок, жана жок кылынган жок.
Добуш берүү долбоорлору боюнча, ошондой эле коммуникациялар менен байланышыңыз. Бул жерде портуңуз бар болсо, Arduino Uno долбоорун иштеп чыгыңыз. Төмөнкүнү карап көрүңүз: Windows Forms тиркемеси ардуинондорго жүктөлөт. I sammenhæng er lyset også fravalgt.
2 -кадам: Servomotor (Anlæg)
Мен сервердик кыймылдаткычты иштетип, Arduino Uno менен иштеймин. Дагы бир жолу, бул жерде өндүрүшчүлөрдүн маалыматы бар. Орнотуулар, MySQL маалымат базасы жана башка программалар. Кыймылсыз абалды аныктоо үчүн автоматтык түрдө. Жөндөмдөрдүн символдору сиз үчүн эң маанилүү. Бул жерде эч кандай пайда жок, алар автоматтык түрдө иштебей, эч кандай кызматка кире алышпайт. Дет -менингтен адамга, WPF колдонмосу аркылуу автоматтык түрдө. MySQL маалымат базасы боюнча дагы бир нерсе бар.
3 -кадам: MySQL маалымат базасы - Indhold
Мен MySQL маалымат базасын табуу үчүн. Колдонуучунун карта кармагычтары дагы, алар дагы эң сонун. Төмөнкү таблицалардын тизмеси бардык жерде өндүрүлгөн. Жөнөкөй сөз менен айтканда, таблицанын үстүнөн көзөмөл жүргүзүү, өндүрүштүн жана өндүрүштүн үстүнөн көзөмөлдөө. Жарыяланган учуруңуз, өндүрүштү иштеп чыгуучу компаниялар. Windows Forms тиркемелери, маалымат алмашуу системалары жана башка нерселердин жардамы менен. Жөнөкөй маалымат булактарынын тизмеси, Ардуино, Эфферленд, жана тиешелүү маалыматтардын логистикасы жана маалымат базасы. Берилиштер берилиштер базасына киргизилет. En Integer, String, VarChar, жана маалымат базалары үчүн. TimeStamp, маалыматтарды сактоо жана дайындоо боюнча маалыматтар.
4 -кадам: Arduino Kode
#кошуу
Servo myServo;
int servoPos; char produkt = '0'; void setup () {myServo.attach (3); // Serial kommunikation Serial.begin башталат (9600); } void loop () {// L serialsning fra serial port produkt = Serial.read (); // Гендердик буйрутма которгуч (өндүрүш) {// Продукт A (1) "1" иштин учуру: myServo.write (50); кечигүү (1000); myServo.write (0); кечигүү (1000); Serial.println ("Бүттү"); тыныгуу; // Продукт B (2) "2" иштин учуру: myServo.write (100); кечигүү (1000); myServo.write (0); кечигүү (1000); Serial.println ("Бүттү"); тыныгуу; // Продукт C (3) "3" иштин учуру: myServo.write (150); кечигүү (1000); myServo.write (0); кечигүү (1000); Serial.println ("Бүттү"); тыныгуу; }}
5 -кадам: Windows Forms Applikation
колдонуу System. Collections. Generic; System. ComponentModel колдонуу; System. Data колдонуу; System. Drawing колдонуу; System. Linq колдонуу; System. Text колдонуу; System. Threading. Tasks колдонуу; System. Windows. Forms колдонуу; System. Collections колдонуу; System. IO. Ports колдонуу; MySql колдонуу; MySql. Data. MySqlClient колдонуу;
аттар мейкиндиги WindowsFormsApp2
{public partial class Form1: Form { /* I classne bliver allle public variabler oprettet. Класстын (MySqlConnection) маалыматы MySQL серверине киргизилбегени үчүн, бул программаларды иштетүү керек. String (connectionString) сырсөзүн ачуу үчүн сырсөздү ачып, сырсөздү ачып койсоңуз болот. Бул бүтүн сан, мен жана 2d массив (orde). Дагы бир нерсени белгилей кетүүчү нерсе, бул өндүрүштүн жана өндүрүштүн эң сонун түрлөрү. Түшүндүрмөлөрдү билдирип коюңуз. Class (BackgroundWorker) программасын иштеп чыгуу. Дагы эң жакшы программалар программаны толугу менен өчүрүп коюңуз. Мен детфилде, др бругбартта, жана дагы канвай опреттет ней ордер, мед корт мелемрум. */ MySqlConnection байланышы; string connectionString;
private int ordrenummer;
private int [,] order = new int [100, 100]; private int SendOrder = new int [100]; жеке сап prodType;
SerialPort sp = жаңы SerialPort ();
жеке BackgroundWorker myWorker = жаңы BackgroundWorker ();
коомдук форма1 ()
{InitializeComponent (); // Анын бливер String (connectionString) аныктамасын колдонот. connectionString = "server = 192.168.1.100; userid = root; pwd = langeland; database = arduino;"; /* Анын "myWorker" программасы ар кандай процесстерде ар кандай мыкты программаларды иштеп чыккан. */ myWorker. DoWork += жаңы DoWorkEventHandler (myWorker_DoWork); myWorker. WorkerReportsProgress = true; myWorker. WorkerSupportsCancellation = true; // Анын бливери өзүн өзү баггрундсгеннемлёбет жетишсиздиги. myWorker. RunWorkerAsync (); // Анын маалымат форматы катталган форматта. Бул MySQL маалымат базасынын эң мыкты форматы. dateTimePicker1. CustomFormat = "yyyy-MM-dd"; dateTimePicker1. Format = DateTimePickerFormat. Custom; }
жеке боштук Afiv_Ordre_Click (объект жөнөтүүчү, EventArgs e)
{ /* Ал жаңыртылган эмес, бирок ал жокко чыгарылган. Бул бүтүн сандар менен толукталган. Дисциплинаны өчүрүү үчүн, сиз өзүңүздү колдоно аласыз. Жөнөкөй сөз менен айтканда, сиз өзүңүздүн алдыңызда болосуз. */ 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; /* Мен илмекти жок кылам, бирок буларды өндүрүүчүсү болуп саналат. */ for (int prod1A = 0; prod1A <prodA; prod1A ++) {order [ordrenummer, prod1A] = produktA; }
for (int prod1B = (prodA); prod1B <(prodB+prodA); prod1B ++) {order [ordrenummer, prod1B] = produktB; }
үчүн (int prod1C = (prodA + prodB); prod1C 99)
{ordrenummer = 0; } // Анын маалымат базасы дагы иштейт. DBQuery ("INSERT INTO` bestilteprod` "(` Produkt A`, `Produkt B`,` Produkt C`) БААЛАРЫ (" + prodA +", " + prodB +", " + prodC +") "); // Анын артыкчылыктары маалымат базасында жазылган. DBQuery ("UPDATE` total` SET `manglende produkter` = (` manglende produkter` +(" +(prodA +prodB +prodC) +")) WHERE 1 "); }
// Мен жараксыз деп эсептейм
private void myWorker_DoWork (объекти жөнөтүүчү, EventArgs e) {while (true) { /* Төмөнкү шарттар боюнча маалымат жок болгондо: */ Status (); while (SendOrder. Sum ()! = 0) { /* Мен бүтүндөй циклди иштетүү үчүн, бүтүндөй бир убакта (бүтүндөй) бүтүмдөрдү жазуумду чечип койгом. Variablen (i) kigger påggendende påggendende påggendende råkke and arrayet, here no nuærende tidspunkt arbejdes i. День киггер и колоннен, свидетельные стол и колоннен. Tallet bliver eksikveret, og inden at variablen rykker, noilest kolonne, bliver den pågældende kolonne sat til 0. Документтердин маалымат базасы жүктөлүп берилет. Эгерде сиз Ардуино менен байланышып жатсаңыз, анда сиз Ардуино менен тил табышасыз. */ for (int i = 0; i <SendOrder. Length; i ++) {Status (); sp. BaudRate = 9600; sp. PortName = "COM4"; sp. Open (); sp. Write (SendOrder . ToString ()); // Программа, эгерде билдирүүлөр жок кылынса, аларды өчүрүү, өчүрүү жана жок кылуу (i). if (SendOrder == 1) {prodType = "Produkt A"; } else if (SendOrder == 2) {prodType = "Produkt B"; } else if (SendOrder == 3) {prodType = "Produkt C"; }
SendOrder = 0;
// Эч нерсе жок кылынган жок, ал эми маалымат берилүүчү 0, маалымат базасы жүктөлгөн жана маалымат алмашылган, ошондой эле Ардуино жана башка тилкелер. if (SendOrder. Sum () == 0) {DBQuery ("INSERT INTO` udforte` ("Продукт түрү`) БААЛАРЫ ('" + prodType + "')"));
DBQuery ("UPDATE` total` SET` продюсер "= (` продюсер продюсер ' + 1), `manglende produkter` = (` manglende produkter` - 1) ");
sp. Close ();
тыныгуу;) Der kvitteres med et "done". Дагы бир нерсе жок болсо, маалымат топтогон маалымат топтому жүктөлгөндөн кийин, сиз өзүңүздүн жеке маалыматыңыздын үстүнөн иштей аласыз. */ sp. ReadTo ("Бүттү");
DBQuery ("INSERT INTO` udforte` "(" Продукт түрү ") БААЛАРЫ ('" + prodType + "')");
DBQuery ("UPDATE` total` SET` продюсер "= (` продюсер продюсер ' + 1), `manglende produkter` = (` manglende produkter` - 1) ");
sp. Close (); Status (); }} // Мен дюймду жок кылуу үчүн детте кылдым, бирок эч ким жокко чыгарган жок (бул жерде эч нерсе жок). for (int i = 0; i <order. GetLength (0); i ++) {int test = order [i, 0]; if (test! = 0) {for (int j = 0; j <100; j ++) {SendOrder [j] = order [i, j];
тартиби [i, j] = 0;
}
тыныгуу; }}
}
} /* "Status" деген жазуу жокко чыгарылган. Det er lavet for at skulle undgå at skrive de samme linjer kode flere steder. Мен "Статуска" кароо үчүн эч кимге жардам көрсөтпөйм, бирок ал жокко чыгарылган, ошондой эле сиз дагы, мен дагы башка нерселерди жок кылам. * / private void Status () { /* MySQL'дин бардык мүмкүнчүлүктөрү жокко эсе, бул жерде бардыгы таблицалар, ошондой эле алар толугу менен жок кылынат. */ MySqlConnection con = жаңы MySqlConnection (connectionString); con. Open (); string str = "select * from total"; MySqlCommand com = жаңы MySqlCommand (str, con); MySqlDataReader reader = com. ExecuteReader (); // Denne funktion er med for at dele Baggrundskoden for the tråd i CPU'en, and en trend to resten resten off koden. reader. Read (); MissingProd. Invoke ((MethodInvoker) делегат {// Анын жаратуучусу, колдонуучусу жана колдонуучусу. MissingProd. Text = "manglende produkter:" + (окурман ["manglende produkter"]. ToString ()); OrdereProd. Text = "produkter lavet:" + (окурман ["продюсер"]. ToString ());}); // Аны ишке ашыруу үчүн бардык чаралар көрүлүп жатат. ProcenteDone. Invoke ((MethodInvoker) делегаты {// Hvis lsseren i My SQL for usbindelsen on my server for "" produtter produkter ikke er lig med 0, if if it doesn'tverver. Hvis det er lig med 0, bliver der udskrevet "0%" skrevet til этикетка. if (int. Parse (окурман ["prodüser produkter"]. ToString ())! = 0) {// Анын тегереги дагы продюсери жана плюссери болуп саналат. ProcenteDone. Text = Math. Round ((float. Parse (окурман ["продюсер"]. ToString ()) /(float. Parse(reader["produceret produkter "]. ToString ()) + float. Parse (окурман ["manglende produkter"]. ToString ()))) * 100). ToString (); // Төмөнкү жыйынтыктар бир топ убакыттан кийин ишке ашат. progressBar1. Value = Int32. Parse (ProcenteDone. Text);} башка {ProcenteDone. Text = "0%";}}); // Анын MySQL'и жүктөлөт. Read. Close (); con. Close ();} // Мен жараксыз болгон жокмун маалыматтын мааниси, убакыттын өтүшү менен pplikationen. жеке боштук Vis_Produkter_Click_1 (объект жөнөтүүчү, EventArgs e) {string date = dateTimePicker1. Value. ToString (). Алып салуу (10);
дата = dateTimePicker1. Text;
string query = "SELECT` Produkt type`, `Tid` FROM udforte WHERE Tid> = '" + date + "00:00:00' AND Tid <= '" + дата + "23:59:59'"; колдонуу (байланыш = жаңы MySqlConnection (connectionString)) колдонуу (MySqlCommand буйругу = жаңы MySqlCommand (суроо, байланыш)) колдонуу (MySqlDataAdapter адаптер = жаңы MySqlDataAdapter (буйрук)) {DataTable prodTable = жаңы DataTable (); adapter. Fill (prodTable);
dataGridView1. DataSource = prodTable;
}
} // Мен MySQLди жокко чыгарган жокмун. Кыймылдын жоктугу, өчүрүлүшү жана өчүрүлүшү мүмкүн эмес. жеке боштук DBQuery (string cmd) {string query = cmd; колдонуу (байланыш = жаңы MySqlConnection (connectionString)) колдонуу менен (MySqlCommand буйругу = жаңы MySqlCommand (суроо, байланыш)) {connection. Open ();
command. ExecuteScalar ();
connection. Close ();
} } } }
6 -кадам: материалдар
1 стк. Arduino Uno
1 стк. Микро серво SG90 9g
7 -кадам: Fobindelsesdiagram / I / O Lliste
Кызмат мотору:
+ = Род
- = Сорттоо
Сигнал = Грён
Сунушталууда:
EAL - Rc Car боюнча Industry 4.0 GPS маалыматын чогултуу: 4 кадам
EAL - Индустрия 4.0 Rc Car боюнча GPS маалымат чогултуу: Бул Нускоодо биз RC машинасына GPS модулун кантип орнотконубуз жана чогултулган маалыматтарды оңой көзөмөлдөө үчүн веб -баракчага жайгаштырганыбыз тууралуу сүйлөшөбүз. Биз алдын ала RC машинабызды кантип жасоо боюнча көрсөтмө бердик, аны бул жерден тапса болот. Бул колдонуп жатат
EAL- Камтылган - Комбинациялык кулпу: 4 кадам
EAL- Камтылган- Айкалыштыруу кулпусу: Бул проект мен EALде 2.1 C-программалоо предметин тандап алган бир мектеп долбоору. Бул биринчи жолу, мен Arduino долбоорун жана С-программалоону жасадым. Бул биригүү кулпусун көрсөтүүчү долбоор. Айкалыштырылган кулпу
EAL - Камтылган программалоо: Кенди аралаштыруучу 1000: 9 кадам
EAL - Камтылган программалоо: Кенди аралаштыруучу 1000: Ардуинодогу долбоорубуз үчүн конфет үчүн миксер жасоону чечтик. Колдонуучу баскычты басып, анан моторлор момпосуйду идишке ыргыта баштайт жана программа өз ишин аткаргандан кийин токтойт деген ой бар
EAL- Камтылган Жабык климат: 5 кадам
EAL- Камтылган ички климат: Биздин мектеп долбоору үчүн бизге ардуинону автоматташтырылган системага киргизүү тапшырмасы коюлган. Биз имараттын ичиндеги температураны, нымдуулукту жана децибелдин деңгээлин сезе турган ички климат сенсорун жасоону тандап алдык. Биз кабинетте бир нече тешик жасадык
EAL - SmartStorage: 3 кадам
EAL - SmartStorage: Бул Каспер Боргер Тулиниустун SmartStorage долбоору