สารบัญ:

Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: 8 ขั้นตอน
Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: 8 ขั้นตอน

วีดีโอ: Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: 8 ขั้นตอน

วีดีโอ: Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: 8 ขั้นตอน
วีดีโอ: SCADA เพื่ออะไร อย่างไร 2024, กรกฎาคม
Anonim
Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI
Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI

หลายวิธีในการเขียนโปรแกรม ควบคุม และควบคุมระบบอุตสาหกรรมด้วย Arduino

ขั้นตอนที่ 1: บทนำ

บทนำ
บทนำ

ในคำแนะนำนี้ฉันจะจัดการกับ:

2 วิธีในการเขียนโปรแกรม Arduino ที่เชื่อมโยงกับเครื่องประเภทต่าง ๆ รวมถึง pusbuttons, สวิตช์และ LEDs

1- วิธีแรกกับ arduino 1.6.x IDE โดยใช้ไลบรารี SM (State Machine)

2- วิธีที่สองโดยใช้ Yakindu ซึ่งเป็นโครงการแก้ไขไดแกรมสถานะที่สร้างขึ้นด้วยสภาพแวดล้อม eclipse: คุณวาดเครื่องสถานะของคุณและสร้างรหัสเพื่อถ่ายโอนไปยังบอร์ด Arduino

ร่วมกับ

2 วิธีในการดูแลเครื่องด้วย SCADA หรือ HMI เสมือนที่ทำงานอยู่:

1- ภายใต้ Android 4.4: Unigo Evolution แอพฟรีที่ไม่มีรหัสเฉพาะรายการที่จะวางบนหน้าจอและ modbus TCP

2 ภายใต้ Windows 8: โครงการฟรี AdvancedHMI ซึ่งต้องการ Visual Studio 2013 ไม่มีรหัสและรายการที่จะวางบนหน้าจอและ modbus TCP

ดังนั้นคุณจึงวาดลำดับการทำงานของคุณด้วย SFC (ในระบบอัตโนมัติ: Sequential Function Chart) คุณแปลมันในแผนภาพสถานะ (ใกล้กว่ามาก) คุณตั้งโปรแกรม (Yakindu หรือ Arduino SM lib) จากนั้นดูแลด้วย SCADA (Unigo) android หรือ AdvancedHMI Windows)

ขั้นตอนที่ 2: คำอธิบายของกระดานจริง:

คำอธิบายของกระดานจริง
คำอธิบายของกระดานจริง
คำอธิบายของกระดานจริง
คำอธิบายของกระดานจริง

แผนผัง:

ฉันใช้บอร์ด Arduino UNO ไม่ใช่โคลนเพราะ Yakindu ไม่สามารถส่งโปรแกรมใด ๆ ไปยังโคลนใด ๆ ได้เพียงแค่ UNO และ Mega board

ฉันสามารถมี I/O ดิจิตอล 32 ตัวพร้อมตัวขยาย SPI 2 ตัว เช่น MCP23S17 (2x16 I/O) และเอาต์พุตอะนาล็อก 12 บิตอีก 2 ตัว (อะนาล็อกจริงไม่กรอง PWM) พร้อม 2 SPI DAC เช่น MCP4921

ฉันไม่ได้วาดอีเทอร์เน็ตชิลด์ แต่คุณต้องการมันเพื่อดูแลระบบของคุณ: ดังนั้น พิน 4, 10, 11, 12 และ 13 จะต้องไม่ถูกนำไปใช้กับอย่างอื่น และเห็นได้ชัดว่าพิน 0 และ 1 สำหรับ RX TX เท่านั้น

ภาพกระดานจริง:

จำเป็นต้องมีปุ่มกด 8 ปุ่ม:

  • 4 สำหรับโหมดแมนนวล: หนึ่งอันสำหรับไฟ LED แต่ละอัน
  • 1 สำหรับการหยุดฉุกเฉิน: ถ้าผลัก คุณอยู่ในโหมดปกติ ปล่อย: ฉุกเฉิน
  • 1 สำหรับโหมดอัตโนมัติซึ่งเปิดและปิดไฟตามลำดับของแต่ละ LED หากปล่อย: โหมดแมนนวลเพื่อควบคุมแต่ละ LED โดยไม่มีลำดับ
  • 1 สำหรับ RUN ในโหมดอัตโนมัติ
  • 1 สำหรับ STOP ในโหมดอัตโนมัติ

4 นำไปจำลองสิ่งที่คุณต้องการ (รีเลย์ วาล์ว…)

ฉันให้ชื่อของแต่ละปุ่มและไฟ LED ที่ฉันใช้ในโปรแกรม

ขั้นตอนที่ 3: ลำดับโปรแกรมอะไร SFC และแผนภาพสถานะ

โปรแกรมลำดับอะไร SFC และแผนภาพสถานะ
โปรแกรมลำดับอะไร SFC และแผนภาพสถานะ
โปรแกรมลำดับอะไร SFC และแผนภาพสถานะ
โปรแกรมลำดับอะไร SFC และแผนภาพสถานะ

ฉันสร้าง SFC ง่ายๆ เพื่ออธิบายว่าระบบควรทำอะไร

3 SFC เป็นสิ่งจำเป็น:

  • SFCsecu เพื่อเข้าหรือออกจากโหมดฉุกเฉินเป็น SFC หลักที่เปิดตัวผู้อื่น
  • SFC auto manual ที่เปิดตัวโดย SFCsecu คุณสามารถเข้าถึงโหมดอัตโนมัติหรือโหมดแมนนวล
  • SFC run stop สแกนและจดจำถ้ามีคนกด DCY (RUN) หรือ FCY (STOP)

SFC เหล่านี้กำลังทำงานในการจำลองแบบหลายมิติ

จากนั้นฉันก็แปลเป็นแผนภาพสถานะ:

  • เครื่องหลัก (ฉุกเฉิน) เปิดตัวทาสอีก 2 ตัว
  • ทาสสำหรับการสแกนและจดจำ DCY และ FCY
  • ทาสที่จะไปถึงโหมดอัตโนมัติหรือด้วยตนเอง

อีกสิ่งหนึ่ง: เมื่อคุณกด DCY คุณสามารถนำเอาท์พุตแอนะล็อกด้วย trimer เสมือนบน scada เมื่อคุณกด FCY เอาต์พุตแอนะล็อกจะลดลงเหลือ 0V

ไดอะแกรมสถานะช่วยให้คุณตั้งโปรแกรม Arduino

ขั้นตอนที่ 4: การเขียนโปรแกรมด้วย Arduino IDE 1.6. X

การเขียนโปรแกรมด้วย Arduino IDE 1.6. X
การเขียนโปรแกรมด้วย Arduino IDE 1.6. X
การเขียนโปรแกรมด้วย Arduino IDE 1.6. X
การเขียนโปรแกรมด้วย Arduino IDE 1.6. X

ฉันให้รหัสเพื่อแปลไดอะแกรมก่อนหน้า ฉันต้องการ libs เพิ่มเติมอีก 3 ตัวที่ฉันให้คุณด้วย

คุณจะต้องใช้ตารางที่อยู่เพื่อทำความเข้าใจว่าพินใดที่คุณใช้สำหรับอะไร และ modbus จะลงทะเบียนที่อยู่ที่เกี่ยวข้อง

ขั้นตอนที่ 5: การเขียนโปรแกรมด้วย YAKINDU

การเขียนโปรแกรมด้วยYAKINDU
การเขียนโปรแกรมด้วยYAKINDU
การเขียนโปรแกรมด้วยYAKINDU
การเขียนโปรแกรมด้วยYAKINDU
การเขียนโปรแกรมด้วยYAKINDU
การเขียนโปรแกรมด้วยYAKINDU

ดาวน์โหลดโปรเจ็กต์เวอร์ชันฟรี 2.9 ก่อน (ไม่ใช่โปร) บน:

www.itemis.com/en/yakindu/state-machine/

จากนั้นทำตามบทช่วยสอนที่ให้มา: มีการดัดแปลงบางอย่างเมื่อเทียบกับครั้งสุดท้ายที่ฉันดาวน์โหลดโปรแกรม เพื่อให้ชื่อส่วนต่างๆ ของไฟล์ "xxxconnector.cpp" เสร็จสมบูรณ์เท่านั้น

ภาพ: การวาดภาพของเครื่องสถานะ, มุมมองของโฟลเดอร์ในโครงการและไลบรารีที่นำเข้าจาก Arduino, มุมมองของ "xxxconnector.cpp" เพื่อสร้างลิงก์ระหว่างช่วงการเปลี่ยนภาพ/สถานะและอินพุต/เอาต์พุตจริงของ คณะกรรมการหรือของ SCADAs

ฉันให้โปรเจ็กต์ที่คุณจะต้องนำเข้าในพื้นที่ทำงานที่สร้างขึ้นโดยอัตโนมัติ

มีให้ด้วย: libs ที่จำเป็นในการนำเข้าไปยัง Yakindu และการเปลี่ยนแปลงบางอย่างที่ต้องทำที่อธิบายไว้ในบทช่วยสอน

ขั้นตอนที่ 6: ดูแลด้วย AdvancedHMI

ดูแลด้วย AdvancedHMI
ดูแลด้วย AdvancedHMI

ขั้นแรกให้ดาวน์โหลด Visual studio Express 2013 ขึ้นไปที่:

www.microsoft.com/fr-fr/download/details.a…

จากนั้นดาวน์โหลดโครงการ AdvancedHMI บน:

sourceforge.net/projects/advancedhmi/?SetF…

ฉันให้ภาพ SCADA ที่ฉันวาดแก่คุณ (พร้อมที่อยู่การลงทะเบียน modbus ที่เกี่ยวข้อง) และตั้งโปรแกรมโดยไม่มีรหัส โปรเจ็กต์ที่แก้ไข และบทช่วยสอนสั้น ๆ

ขั้นตอนที่ 7: ดูแลด้วย Unigo Evolution

ดูแลด้วย Unigo Evolution
ดูแลด้วย Unigo Evolution

คุณต้องใช้ Android ที่มี Android 4.4 (kit kat) และหน้าจอ 7 นิ้ว

ฉันให้ภาพ SCADA ที่ฉันวาดแก่คุณ (และที่อยู่ลงทะเบียน modbus ที่เกี่ยวข้อง) และบทช่วยสอนสั้น ๆ เกี่ยวกับการใช้ Unigo โดยไม่ต้องใช้รหัส โฟลเดอร์ที่มีรูปภาพของไฟอุตสาหกรรมและปุ่มต่างๆ เพื่อใส่ในโฟลเดอร์ UniGOPictures ที่สร้างขึ้นภายในของคุณ SD โดยแอปและโครงการ

ขั้นตอนที่ 8: สรุป

เป็นงานใหญ่ในการรวบรวม 2 วิธีในการเขียนโปรแกรมและการกำกับดูแล 2 วิธีที่แตกต่างกัน มันยากในตอนเริ่มต้นที่จะใช้ทักษะแต่ละด้าน แต่ตอนนี้มันใช้งานได้และเมื่อเข้าใจแล้ว ตอนนี้คุณสามารถควบคุมระบบที่ซับซ้อนมากขึ้นได้แล้ว

ขอบคุณมากสำหรับบทช่วยสอนทั่วโลกมากมายสำหรับ Archie (AdvancedHMI) ถึงRenéB2 (Yakindu) และ Mikael Andersson (Unigo Evolution) และผู้พัฒนาห้องสมุด Arduino ที่อนุญาตให้ฉันทำโครงการ "การระดมเทคโนโลยี" ดังกล่าว

Sans eux j'aurais peut être souffert d'un Sentiment d'incomplétude infinie pour l'éternité J'exagere un peu.

ผู้สอนมีความสุข