Comparator
โปรแกรมในส่วนของการ Comparator นั้นจะเป็นนำค่าของมูลที่วัดได้มาเปรียบเทียบกับค่าสูงสุดและต่ำสุดของค่า Parameter นั้นๆ ซึ่งรายละเอียดในส่วนของ Comparator นี้สามารถแสดงได้ดังนี้
หน้าจอ User Interface
ในส่วนของ front panel ที่เป็นการตั้งค่า Comparator นั้นกลุ่มของข้าพเจ้าได้สร้างตัวเลือกต่างๆไว้ดังนี้
1. ตัวเลือกค่า Parameter เป็นตัวเลือกที่มีไว้ให้ผู้ใช้เซ็ตว่าต้องการตั้งค่า Comparator ของ Parameter ตัวใดซึ่งตัวเลือกนี้เป็นแบบ Drop down menu ดังรูป

ในส่วนของเฟรมที่ 9 นี้จะประกอบไปด้วย Case structure 2 Case ด้วยกันโดยในส่วนของ Case ด้านนอกนั้นจะถูก check ว่าเป็น True or False ด้วยการ check ค่าของ Parameter ว่ามีการเปลี่ยนแปลงหรือไม่โดยใช้ เกจเท่ากับเป็นตัว check การทำแบบนี้ก็เพื่อที่ในกรณีที่ผู้ใช้ต้องการเรียกดูค่า High และ Low ของตัว Parameter ที่ผู้ใช้ได้ทำการเซ็ตไว้ก่อนหน้า Parameter ที่ผู้ใช้กำลังเซ็ตค่าอยู่
โดยถ้าเป็น True ก็จะเจอกับ Case structure อีก 1 Case โดยCaseนี้จะถูก Check ว่าเป็น True or False โดยการ Check ตัว Count2 ว่าไม่เท่ากับ 0 หรือป่าว ซึ่งถ้าไม่เท่ากับ 0 ก็จะให้ค่า True ออกมาแต่ถ้าเท่ากับ 0 ก็จะให้ค่า False ออกมา ( ในส่วนการทำงานของ Count 2 นั้นจะอธิบายอย่างละเอียดอีกทีในหัวข้อของการ Load File Setting ) ซึ่งถ้าได้ค่า False ออกมาก็จะได้ Code ดังรูป





แต่ถ้า Output Value ค่ามากกว่าค่า Low ก็จะแสดงสีเขียวออกมาดังรูป

การ Save Setting
ในการใช้งานโปรแกรมแต่ละครั้ง ผู้ใช้จำเป็นต้องปรับค่าพารามิเตอร์ต่าง ๆ ให้ครบถ้วนเสียก่อนจึงจะสามารถวัดค่าได้ ซึ่งหากนำไปใช้ในวงการอุตสาหกรรมแล้ว การทำเช่นนี้จะเสียเวลาค่อนข้างมาก ดังนั้น ในโปรแกรมนี้ กลุ่มของข้าพเจ้าได้ออกแบบให้สามารถ save ค่า setting ต่าง ๆ เก็บไว้เป็นไฟล์ text ซึ่งสามารถ load มาใช้ภายหลังได้ 
หลักการทำงานของโปรแกรม
ที่หน้าจอ front panel จะสร้างปุ่ม Boolean ซึ่งมี mechanical action ชนิด switch when press ขึ้นมาหนึ่งปุ่ม จากนั้นใน block diagram ใช้ case structure กำหนดการทำงานของแต่ละ case เมื่อผู้ใช้กดปุ่ม save setting จะปรากฏหน้าจอตั้งชื่อไฟล์ที่จะ save เมื่อกดปุ่ม ok โปรแกรมจะเปิดไฟล์ชื่อเดียวกับที่ผู้ใช้กำหนดขึ้นมา หากไม่มีไฟล์ดังกล่าว โปรแกรมจะสร้างขึ้นมาใหม่ จากนั้น ข้อมูลทั้งหมดจะถูกส่งผ่านอุปกรณ์ Format into file เพื่อเปลี่ยนตัวแปรต่าง ๆ ที่ต้องการบันทึกให้อยู่ในรูปของ ไฟล์ และสำหรับตัวแปรที่เป็น array จะใช้ อุปกรณ์ array to spreadsheet string ร่วมกับ concatenate string เพื่อจัดรูปแบบของไฟล์ให้สะดวกต่อการนำไปใช้ และใช้ write to text file เขียนข้อมูลลงไปในไฟล์ จากนั้นจึงปิดไฟล์ด้วย close file ดังรูป 
การ load setting
ในส่วนนี้จะเป็นการดึงข้อมูลใน text file ที่ได้เซฟไว้ก่อนหน้านี้ ออกมาให้อยู่ในรูปที่โปรแกรมสามารถนำไปใช้ได้
หลักการทำงานของโปรแกรม
ใน front panel จะมีปุ่มให้ผู้ใช้กดเลือกว่าจะโหลดไฟล์ setting หรือไม่ เมื่อผู้ใช้กด load จะปรากฏหน้าต่างให้เลือกไฟล์ที่จะนำมาใช้
ใน block diagram จะสร้าง case structure เพื่อกำหนดการทำงานของแต่ละ case ของปุ่ม load setting เมื่อกดปุ่ม โปรแกรมจะเข้ามาทำงานในส่วนของ case “true” ซึ่งจะแบ่งออกเป็นอีก 3 เฟรม
โดย เฟรมที่ 1 จะเป็นการสั่งเปิดไฟล์ขึ้นมา พร้อมทั้งอ่านข้อมูลจากไฟล์ออกมาให้อยู่ในรูปของ string จากนั้นแปลง string ที่ได้มาเป็น array โดยใช้อุปกรณ์ spreadsheet string to array เพื่อจะได้จัดการกับข้อมูลที่อยู่ในไฟล์ได้สะดวกยิ่งขึ้น
ส่วนตัวแปร count 2 นั้น ถูกโปรแกรมให้เพิ่มค่าขึ้นทีละ 1 ทุกครั้งที่ผู้ใช้กดปุ่ม load setting และจะนำค่านี้ไปใช้ในเฟรมที่ 9 เพื่อเปรียบเทียบว่าเท่ากับ 0 หรือไม่ดังที่ได้อธิบายไว้ในตอนต้น ทั้งนี้ก็เพื่อป้องกันการเขียนข้อมูลจาก Hi freq 1,2,3 และ Low freq 1,2,3 ลงไปทับใน hi out และ low out ในขณะที่กดปุ่ม load data สังเกตได้ว่าตัวแปร count 2 จะถูกปรับให้เป็น 0 ทุกครั้งที่โปรแกรมเข้าไปทำงานใน case true สาเหตุที่เป็นเช่นนี้ก็เพราะต้องการให้เข้าไปทำงานใน case นี้เพียงครั้งเดียวหลังจากกดปุ่ม load setting แล้ว ทั้งนี้ก็เพื่อให้ผู้ใช้สามารถเปลี่ยนแปลงค่า Hi freq 1,2,3 และ Low freq 1,2,3 ได้อีก หลังจาก load setting แล้วนั่นเอง
เนื่องจากไฟล์ที่นำมาอ่านข้อมูล เป็นไฟล์ที่ได้มาจากการเซฟข้อมูลของตัวโปรแกรมเอง ดังนั้น จึงมีรูปแบบที่แน่นอน การแปลงข้อมูลให้อยู่ในรูปแบบที่โปรแกรมสามารถนำไปใช้ได้จึงเป็นการย้อนกระบวนการแปลงข้อมูลให้เป็น text file โดยจะแปลงข้อมูล string ให้เป็นรูปแบบต่าง ๆ ดังนี้
1. ข้อมูลชนิด double จะใช้อุปกรณ์ scan value เพื่อทำการแปลง string ให้ออกมาในรูปตัวเลข หาก string อยู่ในรูป array จำเป็นต้องใช้ for loop มาช่วยแปลงให้ออกมาเป็นตัวเลขแบบ array เช่นกัน
2. ข้อมูลชนิด unsigned word จะใช้อุปกรณ์ scan value เพื่อทำการแปลง string ให้ออกมาในรูปตัวเลขเช่นกัน แต่การนำไปต่อกับวงจร จำเป็นจะต้องใช้ index array เพิ่มเข้ามาช่วยในการเลือกว่าจะใช้ค่าใดที่จะต่อกับวงจร
3. ข้อมูลชนิด string ข้อมูลชนิดนี้สามารถนำไปต่อเข้ากับตัววงจรได้ทันที เนื่องจากอยู่ในรูปแบบเดียวกันแล้ว
นอกจากนี้ กลุ่มของข้าพเจ้ายังได้ปรับรูปแบบการแสดงผลใหม่จากของเดิมที่สามารถแสดงค่าได้ทุกค่า ทำให้ตัวเลขที่แสดงมีขนาดเล็ก เนื่องจากข้อจำกัดของขนาดจอ monitor ในการนำไปใช้งานจริงอาจไม่ได้ต้องการวัดพร้อมกันทุกค่า แต่ส่วนใหญ่แล้วต้องการจะวัดพร้อมกันเพียง 4 ค่า จึงได้ตัดการแสดงผลแบบเดิมออก แล้วสร้าง indicator ขึ้นมาใหม่ ซึ่งเป็น array โดยแต่ละคอลัมภ์จะมีตัวเลือกอยู่ด้านบนว่าต้องการให้แสดงผลข้อมูลใด ซึ่งในกรณีนี้ทำให้สามารถขยายขนาดของตัวเลขแสดงผลออกมาได้มากขึ้น ดังรูป

โปรแกรมในส่วนของการ Comparator นั้นจะเป็นนำค่าของมูลที่วัดได้มาเปรียบเทียบกับค่าสูงสุดและต่ำสุดของค่า Parameter นั้นๆ ซึ่งรายละเอียดในส่วนของ Comparator นี้สามารถแสดงได้ดังนี้
หน้าจอ User Interface
ในส่วนของ front panel ที่เป็นการตั้งค่า Comparator นั้นกลุ่มของข้าพเจ้าได้สร้างตัวเลือกต่างๆไว้ดังนี้
1. ตัวเลือกค่า Parameter เป็นตัวเลือกที่มีไว้ให้ผู้ใช้เซ็ตว่าต้องการตั้งค่า Comparator ของ Parameter ตัวใดซึ่งตัวเลือกนี้เป็นแบบ Drop down menu ดังรูป
2. ช่องสำหรับเซ็ตค่า High และ Low ของ Parameter ที่เราเลือกไว้ ซึ่งจะมีช่องที่ให้ผู้ใช้ใส่ด้วยกันทั้งหมด 3 ความถี่ด้วยกันดังรูป
การทำงานของโปรแกรม
ในส่วนของโปรแกรม HIOKI3522(3532) DEMO.vi ที่มีอยู่เดิมนั้นจะไม่มีในส่วนของการ Comparater เพราฉะนั้นกลุ่มของข้าพเจ้าจึงได้ทำการเขียนโค้ดในส่วนนี่ลงไปโดยเริ่มจากFrame ที่ 9 - 11
ในส่วนของโปรแกรม HIOKI3522(3532) DEMO.vi ที่มีอยู่เดิมนั้นจะไม่มีในส่วนของการ Comparater เพราฉะนั้นกลุ่มของข้าพเจ้าจึงได้ทำการเขียนโค้ดในส่วนนี่ลงไปโดยเริ่มจากFrame ที่ 9 - 11
Frame 9

ในส่วนของเฟรมที่ 9 นี้จะประกอบไปด้วย Case structure 2 Case ด้วยกันโดยในส่วนของ Case ด้านนอกนั้นจะถูก check ว่าเป็น True or False ด้วยการ check ค่าของ Parameter ว่ามีการเปลี่ยนแปลงหรือไม่โดยใช้ เกจเท่ากับเป็นตัว check การทำแบบนี้ก็เพื่อที่ในกรณีที่ผู้ใช้ต้องการเรียกดูค่า High และ Low ของตัว Parameter ที่ผู้ใช้ได้ทำการเซ็ตไว้ก่อนหน้า Parameter ที่ผู้ใช้กำลังเซ็ตค่าอยู่
โดยถ้าเป็น True ก็จะเจอกับ Case structure อีก 1 Case โดยCaseนี้จะถูก Check ว่าเป็น True or False โดยการ Check ตัว Count2 ว่าไม่เท่ากับ 0 หรือป่าว ซึ่งถ้าไม่เท่ากับ 0 ก็จะให้ค่า True ออกมาแต่ถ้าเท่ากับ 0 ก็จะให้ค่า False ออกมา ( ในส่วนการทำงานของ Count 2 นั้นจะอธิบายอย่างละเอียดอีกทีในหัวข้อของการ Load File Setting ) ซึ่งถ้าได้ค่า False ออกมาก็จะได้ Code ดังรูป

โดยในส่วนของ Code นี้จะเป็นการนำค่า High ที่ Frequency ที่ 1 2 และ 3 มาสร้างเป็น Array แล้วนำสร้างทับเก็บใน Array ที่มีชื่อว่า “Hi out” อีกทีหนึ่ง โดยมันจะนำข้อมูลของ High Frequency 1 2 และ 3 ที่เข้าไปเก็บลงใน Colum ของค่า Parameter ที่เข้ามาใน Array Hi out และในส่วนของค่า Low Frequency 1 2 และ 3 ก็จะทำงานในแบบเดียวกันเพียงแต่ค่า Low Freqeuncy 1 2 และ 3 จะถูกเก็บลงใน Array ที่ชื่อ “Lo out” แทน แต่ถ้า Count 2 ส่งค่า True ออกมาก็จะได้ Code ดังรูป

ในส่วนของ Code นี้จะเป็นการนำค่าที่อยู่ Array Hi out และ Array Lo out มาแยกออกมาเพื่อนำไปแสดงในช่องของ Hi Freq ที่ 1 ,2 , 3 และ Lo Freq ที่ 1 , 2 , 3 ตามลำดับ
Frame 10

ในส่วนของเฟรมที่ 10 นี่จะเป็นการนำข้อมูลที่เราวัดได้มาทำการเปรียบเทียบกับค่า Hi และ Low ที่เราทำการเซ็ตค่าไว้ แต่เนื่องจากค่าของข้อมูลที่เราวัดได้ และ ค่าของ High และ Low ที่เราเซ็ตนั้นถูกเก็บอยู่ในรูปของ Array 2 dimention เพราะฉะนั้นเราจึงต้องนำ For loop 2 loop มาใช้เพื่อให้มันนำค่าเข้ามาเปรียบเทียบกับค่า High และ Low ทีล่ะค่า โดยเริ่มแรกเราจะนำค่าที่วัดได้ ( Output Value) มาเช็คก่อนว่าเท่ากับ 0 หรือไม่ซึ่งในกรณีนี่ค่าของ Output Value ที่ออกมาจะเท่ากับ 0 ก็ต่อเมื่อเราไม่ได้สั่งให้เครื่องวัดค่าของ Parameter นั้น ซึ่งถ้าได้ค่า True ออกมา เราก็จะทำการใส่สีเทาลงไป แต่ถ้าค่าที่ได้ออกมาเป็น False ก็จะเจอ Code ดังรูป

โดยในส่วนนี้เราจะทำการเช็คก่อนว่าค่าของ High และ Low นั้นนมีค่าเท่ากับ 0 หรือไม่ แล้วนำค่าที่ได้มาใส่ Gate And ที่ต้องทำแบบนี้ก็เพื่อในกรณีที่เราไม่ได้ใส่ค่าของ High และ Low จะเป็น 0 ทั้ง 2 ค่า ซึ่งในกรณีนี้เราจะทำให้แสดงสีเทาออกมาดังรูปข้างบน ในกรณีที่ทั้งค่า High และ Low ไม่ได้เป็น 0 ทั้ง 2 ค่า หรือ เป็น 0 แค่ค่าใดค่าหนึ่งก็เข้าไปสู่ Case False โดยใน Case นี้เราจะทำการเช็คว่าค่า Output Value ที่ออกมาว่ามีค่ามากกว่าค่า High ที่เราเซ็ตไว้หรือไม่ ซึ่งถ้ามีค่ามากกกว่าก็จำการแสดงสีแดงออกมาด้าน front panel แต่ถ้ามีค่าน้อยกว่าค่า High ก็จะนำค่า Output Value นั้นมาเช็คต่อว่ามีน้อยกว่าค่า Low ที่เราเซ็ตไว้หรือไม่ ซึ่งถ้ามีค่าน้อยกว่าก็ทำการแสดงสีเหลืองออกมาดังรูป


แต่ถ้า Output Value ค่ามากกว่าค่า Low ก็จะแสดงสีเขียวออกมาดังรูป

การ Save Setting
ในการใช้งานโปรแกรมแต่ละครั้ง ผู้ใช้จำเป็นต้องปรับค่าพารามิเตอร์ต่าง ๆ ให้ครบถ้วนเสียก่อนจึงจะสามารถวัดค่าได้ ซึ่งหากนำไปใช้ในวงการอุตสาหกรรมแล้ว การทำเช่นนี้จะเสียเวลาค่อนข้างมาก ดังนั้น ในโปรแกรมนี้ กลุ่มของข้าพเจ้าได้ออกแบบให้สามารถ save ค่า setting ต่าง ๆ เก็บไว้เป็นไฟล์ text ซึ่งสามารถ load มาใช้ภายหลังได้

หลักการทำงานของโปรแกรม
ที่หน้าจอ front panel จะสร้างปุ่ม Boolean ซึ่งมี mechanical action ชนิด switch when press ขึ้นมาหนึ่งปุ่ม จากนั้นใน block diagram ใช้ case structure กำหนดการทำงานของแต่ละ case เมื่อผู้ใช้กดปุ่ม save setting จะปรากฏหน้าจอตั้งชื่อไฟล์ที่จะ save เมื่อกดปุ่ม ok โปรแกรมจะเปิดไฟล์ชื่อเดียวกับที่ผู้ใช้กำหนดขึ้นมา หากไม่มีไฟล์ดังกล่าว โปรแกรมจะสร้างขึ้นมาใหม่ จากนั้น ข้อมูลทั้งหมดจะถูกส่งผ่านอุปกรณ์ Format into file เพื่อเปลี่ยนตัวแปรต่าง ๆ ที่ต้องการบันทึกให้อยู่ในรูปของ ไฟล์ และสำหรับตัวแปรที่เป็น array จะใช้ อุปกรณ์ array to spreadsheet string ร่วมกับ concatenate string เพื่อจัดรูปแบบของไฟล์ให้สะดวกต่อการนำไปใช้ และใช้ write to text file เขียนข้อมูลลงไปในไฟล์ จากนั้นจึงปิดไฟล์ด้วย close file ดังรูป

การ load setting
ในส่วนนี้จะเป็นการดึงข้อมูลใน text file ที่ได้เซฟไว้ก่อนหน้านี้ ออกมาให้อยู่ในรูปที่โปรแกรมสามารถนำไปใช้ได้

หลักการทำงานของโปรแกรม
ใน front panel จะมีปุ่มให้ผู้ใช้กดเลือกว่าจะโหลดไฟล์ setting หรือไม่ เมื่อผู้ใช้กด load จะปรากฏหน้าต่างให้เลือกไฟล์ที่จะนำมาใช้
ใน block diagram จะสร้าง case structure เพื่อกำหนดการทำงานของแต่ละ case ของปุ่ม load setting เมื่อกดปุ่ม โปรแกรมจะเข้ามาทำงานในส่วนของ case “true” ซึ่งจะแบ่งออกเป็นอีก 3 เฟรม
โดย เฟรมที่ 1 จะเป็นการสั่งเปิดไฟล์ขึ้นมา พร้อมทั้งอ่านข้อมูลจากไฟล์ออกมาให้อยู่ในรูปของ string จากนั้นแปลง string ที่ได้มาเป็น array โดยใช้อุปกรณ์ spreadsheet string to array เพื่อจะได้จัดการกับข้อมูลที่อยู่ในไฟล์ได้สะดวกยิ่งขึ้น

ส่วนตัวแปร count 2 นั้น ถูกโปรแกรมให้เพิ่มค่าขึ้นทีละ 1 ทุกครั้งที่ผู้ใช้กดปุ่ม load setting และจะนำค่านี้ไปใช้ในเฟรมที่ 9 เพื่อเปรียบเทียบว่าเท่ากับ 0 หรือไม่ดังที่ได้อธิบายไว้ในตอนต้น ทั้งนี้ก็เพื่อป้องกันการเขียนข้อมูลจาก Hi freq 1,2,3 และ Low freq 1,2,3 ลงไปทับใน hi out และ low out ในขณะที่กดปุ่ม load data สังเกตได้ว่าตัวแปร count 2 จะถูกปรับให้เป็น 0 ทุกครั้งที่โปรแกรมเข้าไปทำงานใน case true สาเหตุที่เป็นเช่นนี้ก็เพราะต้องการให้เข้าไปทำงานใน case นี้เพียงครั้งเดียวหลังจากกดปุ่ม load setting แล้ว ทั้งนี้ก็เพื่อให้ผู้ใช้สามารถเปลี่ยนแปลงค่า Hi freq 1,2,3 และ Low freq 1,2,3 ได้อีก หลังจาก load setting แล้วนั่นเอง
เนื่องจากไฟล์ที่นำมาอ่านข้อมูล เป็นไฟล์ที่ได้มาจากการเซฟข้อมูลของตัวโปรแกรมเอง ดังนั้น จึงมีรูปแบบที่แน่นอน การแปลงข้อมูลให้อยู่ในรูปแบบที่โปรแกรมสามารถนำไปใช้ได้จึงเป็นการย้อนกระบวนการแปลงข้อมูลให้เป็น text file โดยจะแปลงข้อมูล string ให้เป็นรูปแบบต่าง ๆ ดังนี้
1. ข้อมูลชนิด double จะใช้อุปกรณ์ scan value เพื่อทำการแปลง string ให้ออกมาในรูปตัวเลข หาก string อยู่ในรูป array จำเป็นต้องใช้ for loop มาช่วยแปลงให้ออกมาเป็นตัวเลขแบบ array เช่นกัน

2. ข้อมูลชนิด unsigned word จะใช้อุปกรณ์ scan value เพื่อทำการแปลง string ให้ออกมาในรูปตัวเลขเช่นกัน แต่การนำไปต่อกับวงจร จำเป็นจะต้องใช้ index array เพิ่มเข้ามาช่วยในการเลือกว่าจะใช้ค่าใดที่จะต่อกับวงจร

3. ข้อมูลชนิด string ข้อมูลชนิดนี้สามารถนำไปต่อเข้ากับตัววงจรได้ทันที เนื่องจากอยู่ในรูปแบบเดียวกันแล้ว
นอกจากนี้ กลุ่มของข้าพเจ้ายังได้ปรับรูปแบบการแสดงผลใหม่จากของเดิมที่สามารถแสดงค่าได้ทุกค่า ทำให้ตัวเลขที่แสดงมีขนาดเล็ก เนื่องจากข้อจำกัดของขนาดจอ monitor ในการนำไปใช้งานจริงอาจไม่ได้ต้องการวัดพร้อมกันทุกค่า แต่ส่วนใหญ่แล้วต้องการจะวัดพร้อมกันเพียง 4 ค่า จึงได้ตัดการแสดงผลแบบเดิมออก แล้วสร้าง indicator ขึ้นมาใหม่ ซึ่งเป็น array โดยแต่ละคอลัมภ์จะมีตัวเลือกอยู่ด้านบนว่าต้องการให้แสดงผลข้อมูลใด ซึ่งในกรณีนี้ทำให้สามารถขยายขนาดของตัวเลขแสดงผลออกมาได้มากขึ้น ดังรูป








รูปแสดง Block diagram ในส่วนของคำสั่ง :CORR:OPEN
รูปแสดง Block diagram ในส่วนของ Command message
รูปแสดง Block diagram ในส่วนของ Command message
รูปแสดง Block diagram ในส่วนของ Query message

รูป แสดงเครื่อง Hioki 3532-50 LCR HiTester 
รูปแสดงการส่งข้อความระหว่างคอมพิวเตอร์กับเครื่องวัด LCR



