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 สำหรับเริ่มต้นระบบ:

Barcode Scanner Init
เปิดใช้งาน Scanner ตอนเริ่มต้น โดยตั้งค่า LW60997 = 1
C · SKTool Macro
#include "MacroInit.h"
//#include "subFun1.c" //Example

// Barcode Scanner Init Script

void Macro_main(IN *p)
{
 MarcoInit
  #define UseScanner 60997
  LocalWord[UseScanner] = 1;
}
ตำแหน่งข้อมูลที่ใช้
LocalWord[60997]

2. Script หลัก (Scan Logic)

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

Barcode Scan Handler
อ่าน Flag เมื่อสแกนเสร็จ → copy ข้อมูลจาก register สแกนเนอร์ไปยังตำแหน่งที่กำหนด → reset flag
C · SKTool Macro
#include "MacroInit.h"
//#include "subFun1.c" //Example

// การกำหนด 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)
{
 MarcoInit
  // ตรวจสอบว่าการสแกนเสร็จสิ้นแล้ว
  if(LocalBit[ScanFinishFlag] == 1)
  {
      // Copy ข้อมูลที่อ่านได้ไปยังตำแหน่งที่เรากำหนด
      int i;
      for(i = 0; i < LocalWord[ScanDataLength]; i++)
      {
          LocalWord[SaveDataStart + i] = LocalWord[ScanDataStart + i];
      }

      // รีเซ็ต Flag เพื่อเตรียมสำหรับการสแกนครั้งต่อไป
      LocalBit[ScanFinishFlag] = 0;
  }
}
ตำแหน่งข้อมูลที่ใช้
LocalBit[60147]LocalWord[60999]LocalWord[61000+]LocalWord[10000+]

การตั้งค่า 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 ต่อไป