การใช้งาน Barcode Scanner กับ HMI
เรียนรู้การเชื่อมต่อและใช้งาน Barcode Scanner กับ HMI สำหรับระบบอัตโนมัติ อ่านข้อมูล Barcode เก็บประวัติการสแกน และเปลี่ยน Recipe พร้อม Script และ Register
อัพเดทล่าสุด: 30/1/2569
ราคาชุดอุปกรณ์
การใช้งาน Barcode Scanner กับ HMI
การเชื่อมต่อและใช้งาน Barcode Scanner กับ HMI เป็นฟีเจอร์ที่มีประโยชน์สำหรับระบบอัตโนมัติ ช่วยให้สามารถอ่านและเก็บข้อมูล Barcode เพื่อใช้ในการควบคุมหรือติดตามผลิตภัณฑ์
เป้าหมายของระบบ
ระบบนี้มีเป้าหมายหลัก 3 ประการ:
- แสดงข้อมูลที่อ่านได้ - สามารถแสดงข้อมูลจาก Barcode Scanner บนหน้าจอ HMI
- เก็บประวัติ History - บันทึกข้อมูลการสแกนย้อนหลังอย่างน้อย 10 รายการ
- เปลี่ยน 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
- สร้างหน้าใหม่ในระบบ HMI
- กำหนด ID = 21
- ตั้งชื่อหน้าจอเป็น "Barcode"
- เพิ่มปุ่ม 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 เพื่อให้ทำงานอย่างต่อเนื่อง
การเชื่อมต่อฮาร์ดแวร์
ขั้นตอนการเชื่อมต่อ
- ถอดสาย USB-C ออกจาก HMI
- เสียบสาย USB-A ของ Barcode Scanner เข้ากับ Port ของ HMI
- ทดสอบการทำงานโดยการสแกน Barcode
การทดสอบ
- Navigate ไปยังหน้า Barcode
- ทำการสแกน Barcode ใดๆ
- ตรวจสอบว่า:
- 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 ต่อไป
ควรอ่านก่อน:
อ่านต่อ:
มีคำถาม? ติดต่อทีมงาน
