บัญชี

HMI
ขั้นสูง
12 นาที

การใช้งาน Barcode Scanner กับ HMI

เรียนรู้การเชื่อมต่อและใช้งาน Barcode Scanner กับ HMI สำหรับระบบอัตโนมัติ อ่านข้อมูล Barcode เก็บประวัติการสแกน และเปลี่ยน Recipe พร้อม Script และ Register

อัพเดทล่าสุด: 30/1/2569

ราคาชุดอุปกรณ์

฿6,990

การใช้งาน Barcode Scanner กับ HMI

การเชื่อมต่อและใช้งาน Barcode Scanner กับ HMI เป็นฟีเจอร์ที่มีประโยชน์สำหรับระบบอัตโนมัติ ช่วยให้สามารถอ่านและเก็บข้อมูล Barcode เพื่อใช้ในการควบคุมหรือติดตามผลิตภัณฑ์

เป้าหมายของระบบ

ระบบนี้มีเป้าหมายหลัก 3 ประการ:

  1. แสดงข้อมูลที่อ่านได้ - สามารถแสดงข้อมูลจาก Barcode Scanner บนหน้าจอ HMI
  2. เก็บประวัติ History - บันทึกข้อมูลการสแกนย้อนหลังอย่างน้อย 10 รายการ
  3. เปลี่ยน Recipe - นำข้อมูลที่อ่านได้ไปใช้ในการเปลี่ยน Recipe

Reserve Register ที่สำคัญ

Register หลักสำหรับ Barcode Scanner

  • LB60147 - Scan Finished Flag (ถูก Trigger เมื่อการสแกนเสร็จสิ้น)
  • LW60997 - Use Scanner Enable (ตั้งค่า 1 เพื่อเปิดใช้งาน Scanner)
  • LW60999 - Data Length (ความยาวของข้อมูลที่อ่านได้)
  • LW61000 - Scan Data Start (ตำแหน่งเริ่มต้นของข้อมูลที่อ่านได้)

Register สำหรับ Recipe Control

  • RWIWord0 - ระบุ Recipe ปัจจุบัน
  • LB60100 - Trigger สำหรับเขียน Recipe จากหน้าจอไปยัง PLC

การใช้งาน ASCII Code

Barcode Scanner รองรับเฉพาะตัวอักษร ASCII ซึ่งประกอบด้วย:

  • ตัวอักษร Alphabet (A-Z, a-z)
  • ตัวเลข (0-9)
  • อักขระพิเศษบางตัว

ตัวอย่างค่า ASCII:

  • อักษร 'A' = 0x41 (Hex) = 65 (Decimal)

การตั้งค่า Script

1. Script Initialize

สร้าง Script สำหรับเริ่มต้นระบบ:

c
// Barcode Scanner Init Script

void Macro_main(IN *p)
{
    #define UseScanner 60997
    LocalWord[UseScanner] = 1;
}

2. Script หลัก (Scan Logic)

สร้าง Script สำหรับจัดการการอ่านข้อมูล:

c
// การกำหนด Reserve Register
#define DownloadRecipeTriggerBit 60100
#define ScanFinishFlag 60147
#define ScanDataLength 60999
#define ScanDataStart 61000

// การกำหนดค่าสูงสุด
#define MaxDataLength 50
#define NumberOfBarcodes 10

// ตำแหน่งเก็บข้อมูลที่กำหนดเอง
#define SaveDataStart 10000

void Macro_main(IN *p)
{
    // ตรวจสอบว่าการสแกนเสร็จสิ้นแล้ว
    if(LocalBit[ScanFinishFlag] == 1)
    {
        // Copy ข้อมูลที่อ่านได้ไปยังตำแหน่งที่เรากำหนด
        int i;
        for(i = 0; i < LocalWord[ScanDataLength]; i++)
        {
            LocalWord[SaveDataStart + i] = LocalWord[ScanDataStart + i];
        }
        
        // รีเซ็ต Flag เพื่อเตรียมสำหรับการสแกนครั้งต่อไป
        LocalBit[ScanFinishFlag] = 0;
    }
}

การตั้งค่า HMI

1. สร้างหน้าจอ Barcode

  1. สร้างหน้าใหม่ในระบบ HMI
  2. กำหนด ID = 21
  3. ตั้งชื่อหน้าจอเป็น "Barcode"
  4. เพิ่มปุ่ม Navigate สำหรับเปลี่ยนหน้า

2. เพิ่ม Display Elements

Numeric Display

  • Address: LW60999 (แสดงความยาวข้อมูล)

ASCII Display

  • Address: LW10000
  • Length: 24 ตัวอักษร (สำหรับแสดงข้อมูล Barcode)

3. การตั้งค่า Script Events

Init Script

  • เพิ่ม BarcodeScanner ใน Init Script

Global Script

  • เพิ่ม ScanLogic ใน Global Script เพื่อให้ทำงานอย่างต่อเนื่อง

การเชื่อมต่อฮาร์ดแวร์

ขั้นตอนการเชื่อมต่อ

  1. ถอดสาย USB-C ออกจาก HMI
  2. เสียบสาย USB-A ของ Barcode Scanner เข้ากับ Port ของ HMI
  3. ทดสอบการทำงานโดยการสแกน Barcode

การทดสอบ

  1. Navigate ไปยังหน้า Barcode
  2. ทำการสแกน Barcode ใดๆ
  3. ตรวจสอบว่า:
    • Numeric Display แสดงความยาวข้อมูลถูกต้อง
    • ASCII Display แสดงข้อมูล Barcode ที่อ่านได้

เคล็ดลับในการใช้งาน

การใช้ #define

การใช้ #define แทนการใช้ตัวเลขโดยตรงมีข้อดี:
  • อ่าน Code ง่ายขึ้น - สามารถเข้าใจว่า Register นั้นใช้ทำอะไร
  • Maintain ง่าย - เมื่อต้องแก้ไขค่าสามารถแก้ที่เดียว
  • ลดความผิดพลาด - ไม่ต้องจำตัวเลขที่ยาวๆ

ข้อควรระวัง

  • ข้อมูล Barcode ส่วนใหญ่มีความยาว 2-15 ตัวอักษร
  • ควรกำหนด MaxDataLength ไว้ที่ 50 เพื่อความปลอดภัย
  • ต้องรีเซ็ต ScanFinishFlag หลังจากประมวลผลข้อมูลเสร็จ

สรุป

การใช้งาน Barcode Scanner กับ HMI ต้องเข้าใจ Reserve Register ที่สำคัญและวิธีการเขียน Script ที่เหมาะสม การใช้ #define ช่วยให้ Code อ่านง่ายและ maintain ได้ดีกว่า ในขั้นตอนต่อไปจะพัฒนาฟีเจอร์ History และการเปลี่ยน Recipe ต่อไป