วันพุธที่ 2 กรกฎาคม พ.ศ. 2557

บทที่ 2 ระบบตัวเลขและการเข้ารหัส

2.1 ระบบตัวเลข
ระบบตัวเลขมีความสำคัญและมีประโยชน์ในการประยุกต์ใช้งาน PLC เพราะว่าฟังก์ชั่นพื้นฐานของ PLC นั้นจะมีคำสั่งต่างๆที่เกี่ยวกับตัวเลขไม่ว่าจะเป็นคำสั่งการเก็บ และการดำเนินการต่างๆกับตัวเลข ซีงเป็นการดำเนินงานที่เรียบง่ายที่สุด ในกรณีทั่วๆไป PLC จะนิยมใช้เลขฐาน 2 ในการแสดงรหัสและปริมาณต่างๆ ถึงแม้ว่าการดำเนินการทางด้านตัวเลขจะเป็นส่วนหนึ่งของการใช้ PLC แต่การศึกษาเกี่ยวกับระบบตัวเลขจะเป็นประโยชน์กับผู้ใช้ PLC มาก
2.1.1 ระบบตัวเลขฐานสิบ
เป็นระบบตัวเลขที่เราใช้เลข 10 เป็นฐาน ระบบเลขฐาน 10 เป็นระบบที่เราคุ้นเคยที่สุด โดยพัฒนามาจากแนวคิดการนับโดยใช้นิ้วมือ ซึ่งมนุษย์เรานี้มี 10 นิ้ว ดังนั้นจำนวนตัวเลขในระบบฐานนี้จึงมีตัวเลข 10 ตัว ซึ่งมีสัญลักษณ์ดังต่อไปนี้คือ 0,1,2,3,4,5,6,7,8,9 และจำนวนตัวเลขรวมของสัญลักษณ์ก็คือจำนวนที่แท้จริงนั่นเอง ซึ่งมูลค่าที่มากที่สุดของสัญลักษณ์จะน้อยกว่าค่าฐาน (เลขฐานสิบจะมีสัญลักษณ์สูงที่สุดคือเลข 9 ) แต่ก็มีเทคนิคที่จะแสดงค่าที่มากกว่า 9 ได้ดังต่อไปนี้

ในระบบเลขฐาน ค่าตำแหน่ง (Place Value) ถูกกำหนดเป็นตำแหน่งต่างๆสำหรับเพื่อแสดงค่าที่มากกว่า 9 โดยจะเริ่มจากตำแหน่งขวาไปทางซ้าย โดยตำแหน่งแรกจะเรียกว่าตำแหน่งที่ 0 ตำแหน่งที่ 2 จะเรียกว่าตำแหน่งที่ 1 โดยจะไปเรื่อยๆจนกระทั่งถึงตำแหน่งที่ n เป็นต้น
รูปที่ 2.1 แสดงค่าตำแหน่ง
ค่าน้ำหนัก (Weight Value) ถูกกำหนดเป็นตำแหน่งต่างๆ ซึ่งตำแหน่งต่างๆมีค่าขึ้นกับฐาน คือเท่ากับฐานนั้นยกกำลังตำแหน่ง (Place Value) สำหรับระบบเลขฐาน 10 เมื่อไล่จากขวามาซ้ายพบว่า ค่า Weight Value จะมีค่าเป็น 1,10,100,1000.....ตามลำดับ เมื่อต้องการคำนวณหาค่าเราจะใช้วิธีที่เรียกว่า Sum – Of – The – Weights Method
รูปที่ 2.2 แสดงค่าน้ำหนัก
ค่าของตัวเลขฐาน 10 หาได้โดยการคำนวณแต่ละตัวเลขกับค่าน้ำหนักแล้วนำค่าที่ได้มาบวกกัน ยกตัวอย่างเช่น ถ้าเราต้องการหาค่า 9876 เมื่อเราใช้วิธี Sum – Of – The – Weights Method จะได้ดังต่อไปนี้
ในกรณีเดียวกัน ถ้าเราไปพบตัวเลขในระบบอื่นๆ เราก็จะใช้วิธีเช่นเดียวกับตัวเลขฐาน 10  เพื่อแปลงตัวเลขระบบนั้นมาเป็นเลขฐานที่ 10 ได้ดังต่อไปนี้
ผลรวมของค่า N0 ถึง N5 จะได้ค่าเท่ากับเลขฐาน 10 ของตัวเลขดังกล่าวในฐานที่ b
2.1.2 ระบบตัวเลขฐานสอง
เป็นระบบที่ใช้เลข 2 เป็นฐาน ดังนั้นระบบนี้จะประกอบด้วยตัวเลขเพียง 2 ตัวเท่านั้นคือเลข 0 กับ 1 ไม่มีเลข 2,3,4 ....เป็นเลขฐานที่ใช้ใน PLC และระบบคอมพิวเตอร์มาก  ระบบเลขฐาน 2 เป็นระบบตัวเลขที่มีประโยชน์อย่างมาก ซึ่งจะใช้เพื่ออำนวยความสะดวก ในการแสดงสถานะของเครื่องจักร ซึ่งมักจะมีค่า 2 สถานะ ถ้าเปรียบเทียบกับตัวเลขแล้วก็จะมีสถานะเป็น 0 หรือ 1 มากว่าจะใช้เลขฐาน 10  เพราะอุปกรณ์ทางไฟฟ้าและอิเล็กทรอนิกส์ส่วนใหญ่จะมี 2 สถานะคือเช่น หลอดไฟฟ้าเปิดหรือปิด  วาล์วเปิดหรือปิด สวิตช์เปิดหรือปิด ในความเป็นจริงแล้วเราจะเห็นระบบเลขฐาน 2 แทบจะตลอดเวลา เมื่อเราใช้อุปกรณ์ต่างๆเช่น กรณีที่เราใช้คอมพิวเตอร์ เมื่อเราต้องการที่จะเปิดคอมพิวเตอร์ เราก็จะเลือกสวิตช์ไปตำแหน่งที่ 1 หรือเมื่อเราต้องการปิดคอมพิวเตอร์ เราก็จะเลือกไปที่สวิตช์ไปที่ตำแหน่งที่ 0 (ดูรูปที่ 2.3)

ในกรณีวงจรทางดิจิตอลสามารถแบ่งแยกระดับได้สองระดับระหว่าง 2 แรงดันทางไฟฟ้า (เช่น 5 โวลต์ และ 0 โวลต์) ซึ่งทำให้ระบบเลขฐานสอง เป็นประโยชน์อย่างมากในการประยุกต์ทางดิจิตอล
รูปที่ 2.3 แสดงระบบเลขฐานสอง 1 และ 0 บนปุ่มเปิด- ปิด ของเครื่องคอมพิวเตอร์ ซึ่งจะแสดงสถานเปิด และ ปิด 
เหมือนกับระบบเลขฐานสิบ ตัวสัญลักษณ์ของระบบเลขฐานสองจะมีค่าไม่เกิน 1 เมื่อได้ชุดตัวเลขที่จัดเรียงจากขวาไปซ้ายแล้วค่าน้ำหนักของเลขฐานสองมีค่าเท่ากับ 2 ยกกำลังค่าตำแหน่ง ดังนั้นค่าน้ำหนักสำหรับระบบเลขฐานสองเมื่อไล่จากขวาไปซ้ายจะมีค่า 1,2,4,8,16,32,64,…….เมื่อค่าตำแหน่งคือ 0,1,2,3,4,5,6,…..ซึ่งใช้วิธีการเหมือนการคำนวณเลขฐานสิบ นั่นเอง ดังนั้นเมื่อคำนวณหาค่าในระบบเลขฐาน 10 จะได้ดังต่อไปนี้
ดังนั้นค่า 10110110 ในระบบเลขฐานสอง จะมีค่าเท่ากับ 182 ในระบบเลขฐาน 10 นั่นเอง โดยตัวเลขแต่ละตัวในระบบเลขฐานสองจะเรียกแต่ละตัวว่า บิต (Bit) ดังนั้น10110110 (มีค่าเท่ากับ 182 ในระบบฐานสิบ) จึงมี 8 บิต
เมื่อมีกลุ่มที่ประกอบด้วย 4 บิต เราจะเรียกกลุ่มนั้นว่า นิบเบิ้ล (Nibble)  
กลุ่มที่ประกอบด้วย 8 บิต เราจะเรียกกลุ่มนั้นว่า ไบต์ (Byte) 
กลุ่มที่ประกอบด้วยจำนวนตัวเลข 16 บิต ที่เท่ากับ 2 ไบต์ เราจะเรียกกลุ่มนั้นว่า เวิร์ด (Word)
กลุ่มที่ประกอบด้วยตัวเลขจำนวน 32 บิต ที่เท่ากับ 4 ไบต์ จะเรียกกลุ่มนั้นว่า ดับเบิ้ลเวิร์ด (Double Word)
ในรูปที่ 2.4 จะแสดงเลขฐานสองจำนวน 16 บิต ซึ่งจะเรียกบิตที่อยู่ขวาสุดว่า บิตที่มีนัยสำคัญน้อย (Least Significant Bit: LSB) ซึ่งเป็นบิตทีมีค่าน้อยที่สุด และเรียกบิตที่อยู่ซ้ายสุดว่า บิตที่มีนัยสำคัญมาก (Most Significant Bit :MSB) ซึ่งเป็นบิตทีมีค่ามากที่สุด
รูปที่ 2.4 แสดงความสัมพันธ์ระหว่างเวิร์ด ไบต์ และ บิต
ในการนับเลขฐานสอง เราจะพบว่ามันค่อนข้างที่สับสนเนื่องจากว่าเรานั้นไม่คุ้นเคยกับระบบเลขฐานสองมาก่อน เพราะว่าระบบเลขฐานสองประกอบด้วยตัวเลข 2 ชนิดคือเลข 0 กับเลข 1 เท่านั้น เมื่อมีการเปลี่ยนแปลงเพียงแค่ จากตำแหน่งปิด (ตำแหน่งที่ 0)  ไปเป็นตำแหน่งเปิด (ตำแหน่งที่ 1) และเมื่อเปลี่ยนจากตำแหน่งที่ 1 ไปยังตำแหน่งที่ 0  ก็จะทำให้หลักของตัวเลขเพิ่มขึ้นอีกหนึ่งหลัก ซึ่งแตกต่างจากระบบเลขฐานสิบ ซึ่งจะต้องเปลี่ยนตัวเลขจาก 1 ไป 2 ...จนกระทั่งถึง 9 เมื่อมาถึงค่าที่ 10 หลักของเลขฐานสิบจึงจะเพิ่มขึ้น
ในระบบเลขฐานสอง ก็เช่นเดียวกับเลขฐานสิบ เมื่อนับจาก 0 ไป 1 แล้วจะนับต่อไปเป็น 10 (อ่านว่าหนึ่ง ศูนย์ ในระบบฐาน 2 ) ซึ่งมีค่าเท่ากับ 2 ในระบบฐานสิบ เมื่อเปรียบเทียบกับระบบฐานสิบจะพบว่า ถ้านับจาก 1 ไป 2 ...จนถึง 9 เมื่อนับต่อไปจะขึ้นหลักใหม่เป็นเลข 10 (อ่านว่า สิบ ในระบบฐานสิบ) ตารางที่ 2.1 จะแสดงการเปรียบเทียบสัญลักษณ์ของตัวเลขฐานสิบเมื่อเปรียบเทียบกับเลขฐานสองตั้งแต่เลข 0 ถึงเลขที่ 15

ตารางที่ 2.1 แสดงการนับในระบบเลขฐานสิบเมื่อเปรียบเทียบกับระบบเลขฐานสอง
ระบบฐานสิบ
ระบบเลขฐานสอง
0
0
1
1
2
10
3
11
4
100
5
101
6
110
7
111
8
1000
9
1001
10
1010
11
1011
12
1100
13
1101
14
1110
15
1111
2.1.3 ระบบตัวเลขฐานแปด
การเขียนตัวเลขในรูปแบบเลขฐานสองนั้นจะใช้จำนวนตัวเลขมากกว่าการเขียนตัวเลขมากกว่าเลขฐานสิบ ตัวอย่างเช่นเลข 9110 ซึ่งเท่ากับ 10110112  และถ้ามีจำนวนเลขฐานสองหลายตัวทำให้เกิดความลำบากในการอ่านและเขียนตัวเลขเหล่านั้น โดยเฉพาะมนุษย์เราปกติ ดังนั้นเรามักใช้ระบบตัวเลขฐานแปด เพื่อใช้ในการแสดงระบบเลขฐานสอง เพราะใช้ตัวเลขน้อยกว่า ระบบเลขฐานแปดจะใช้เลขแปดเป็นฐาน ซึ่งจะประกอบด้วยสัญลักษณ์ทั้งหมด 8 ตัวดังต่อไปนี้คือ 0,1,2,3,4,5,6,7 ซึ่งตารางที่ 2.2 จะแสดงการนับจำนวนตั้งแต่ 1 ถึง 15 โดยใช้ระบบเลขฐานแปดและเลขฐานสอง
ตารางที่ 2.2 แสดงการนับในระบบเลขฐานสิบเมื่อเปรียบเทียบกับระบบเลขฐานสองและระบบเลขฐานแปด
ระบบฐานสิบ
ระบบเลขฐานสอง
ระบบเลขฐานแปด
0
0
0
1
1
1
2
10
2
3
11
3
4
100
4
5
101
5
6
110
6
7
111
7
8
1000
10
9
1001
11
10
1010
12
11
1011
12
12
1100
14
13
1101
15
14
1110
16
15
1111
17
เหมือนกับระบบเลขฐานอื่น แต่ละตัวเลขในระบบเลขฐานแปดจะมีน้ำหนักตามตำแหน่งที่มันอยู่ตัวอย่างเช่น เลขฐานแปดที่มีสัญลักษณ์ 1767 จะมีค่าเท่ากับ 1015 ในระบบเลขฐานสิบ ซึ่งจะแสดงดังต่อไปนี้
จากที่กล่าวมาแล้วระบบเลขฐานแปด มีไว้เพื่อช่วยให้สะดวกในการเขียนเลขฐานสอง ระบบเลขฐานแปด (23) ซึ่งประกอบด้วยเลขฐานสองจำนวน 3 บิต ทำให้เราสามารถหาเลขฐานแปดจากเลขฐานสองได้โดยการ
1.จับกลุ่มจากฝั่งขวามือสุด (LSB) โดยจับทีละ 3 บิต ส่วนด้านซ้ายมือไม่ต้องสนใจว่าจะเหลือเท่าไหร่
2.ทำการแปลงเลขฐานสองที่จับกลุ่มมาแล้วให้เป็นเลขฐาน 10
ซึ่งจะแสดงตัวอย่างได้ดังต่อไปนี้

ดังนั้นเลขฐานสองจำนวน 16 บิตสามารถที่จะแปลงเป็นเลขฐานแปดได้จำนวน 6 ตัว ซึ่งในบทถัดๆไปเราจะใช้เลขแปดบิตทำการอ้างอิงตำแหน่งอุปกรณ์อินพุตและเอ้าท์พุทและหน่วยความจำ

2.1.4 ระบบตัวเลขฐานสิบหก
เป็นระบบตัวเลขที่ใช้เลข 16 เป็นฐานโดยมีสัญลักษณ์เป็นตัวเลขตั้งแต่ 0 ถึง 9 และตัวอักษรอีก 6 ตัวคือตั้งแต่ A ,B,C,D,E,F ซึ่งเป็นอักษรที่แสดงเลข 10 , 11 , 12 ,13 ,14 , 15 ตามลำดับ โดยตั้งขึ้นมาเพื่อนำมาแสดงระบบตัวเลขฐานสองเหมือนกับระบบตัวเลขฐานแปด ระบบตัวเลขฐานสิบหกจะประกอบด้วยกลุ่มตัวเลขฐานสองจำนวน 4 บิต ตัวอย่างที่แสดงในสตารางที่ 2.3 จะแสดงการนำค่าตั้งแต่ 0 ถึง 15 ของระบบเลขฐานสิบหก เมื่อเปรียบเทียบกับระบบเลขฐานสิบและระบบเลขฐานสอง
ตารางที่ 2.3 แสดงการนับในระบบเลขฐานสิบเมื่อเปรียบเทียบกับระบบเลขฐานสองและระบบเลขฐานสิบหก
ระบบฐานสิบ
ระบบเลขฐานสอง
ระบบเลขฐานสิบหก
0
0
0
1
1
1
2
10
2
3
11
3
4
100
4
5
101
5
6
110
6
7
111
7
8
1000
8
9
1001
9
10
1010
A
11
1011
B
12
1100
C
13
1101
D
14
1110
E
15
1111
F
เมื่อต้องการจะเปลี่ยนเลขฐานสิบหกให้เป็นเลขฐานสิบก็ใช้หลักการของ Sum of the Weight Method เหมือนกับวิธีที่ผ่านมาแล้วนั่นเอง แต่มีข้อสังเกตคือ ตัวอักษรที่เป็น A ,B,C,D,E,F ก็มีค่าเท่ากับ 10 , 11 , 12 ,13 ,14 , 15 ตามลำดับ ซึ่งจากตัวอย่างข้างล่างนี้จะพบว่า F1A6 ในระบบฐานสิบหก ก็คือค่า 61,862 ในระบบเลขฐานสิบนั่นเอง ซึ่งมีวิธีการหาค่าได้ดังต่อไปนี้

เช่นเดียวกับระบบเลขฐานแปด เมื่อต้องการจะเปลี่ยนเลขฐานสิบหกเป็นเลขฐานสองก็สามารถทำได้โดยการ
1.นำตัวเลขแต่ละตัวของเลขฐานสิบหกออกมา
2.นำตัวเลขที่แยกออกมาแล้วมาแปลงเป็นเลขฐานสองจำนวน 4 บิต ซึ่งอาจจะใช้ตารางที่ 2.3 ช่วยก็ได้ ดังตัวอย่างต่อไปนี้
2.2 การแปลงตัวเลข
ในส่วนที่แล้ว เราทราบแล้วว่า จะแปลงเลขฐานต่างๆไปเป็นเลขฐานสิบได้โดยวิธี Sum – of – the – Weights Method ส่วนในส่วนนี้เราจะศึกษาการแปลงเลขจากฐานสิบไปเป็นฐานต่างๆ อาทิเช่น ระบบเลขฐานสอง ฐานแปด ฐานสิบหก หรือ ระบบเลขฐานอื่นๆ
การแปลงตัวเลขจากฐานสิบไปเป็นตัวเลขในระบบฐานอื่นๆ เราจะใช้วิธีการหารอย่างต่อเนื่องด้วยเลขฐาน ถ้ามีเศษ (Remainder) ตัวเศษนี้จะอยู่ในตำแหน่ง LSB (Lease Significant Bit) ซึ่งจะอยู่ด้านขวาสุด แต่ถ้าไม่มีเศษเราจะใส่ค่า 0 อยู่ในตำแหน่ง LSB แทน โดยการหารจะดำเนินการต่อไปเรื่อยๆจนกระทั่งได้ผลลัพธ์เป็น 0 จึงจะยุติการหาร วิธีนี้อาจจะเป็นวิธีที่ไม่สะดวกสักเท่าไหร่ แต่ก็เป็นวิธีที่ทำความเข้าใจได้ง่ายที่สุด
ต่อไปจะยกตัวอย่างเพื่อประกอบความเข้าใจ เช่นถ้าเราต้องการหาเลขฐาน 5 ของจำนวน Z ในระบบฐานสิบ (ดูรูปที่ 2.5 ประกอบ) เมื่อเราทำการหารด้วย 5 ครั้งแรกจะได้ผลลัพธ์เป็น N1 โดยมีเศษเป็น R1 ซึ่ง R1 นี้เองจะเป็นจะเป็นตัวเลขตัวเลขในระบบเลขฐานห้า ซึ่งก็เป็น LSB นั่นเองซึ่งเป็นตัวเลขที่อยู่ขวาสุดนี่เอง  จากนั้นเราก็นำ N1 มาหารด้วย 5 ต่อไป ซึ่งก็จะได้ผลลัพธ์เป็น N2 และมีเศษเป็น R2 ซึ่งจะเป็นตัวเลขที่อยู่ลำดับที่ 2 นับจากขวาสุด โดยวิธีเดียวกัน จากนั้นเราก็นำผลที่ได้มาหาร 5 ต่อไปเรื่อยๆ จนกระทั่งผลลัพธ์เป็น 0 และเมื่อถึงเศษตัวสุดท้ายคือ Rn นั่นก็คือเราได้ค่า MSB ซึ่งเป็นบิตที่อยู่ซ้ายสุด ก็คือ Rn นั่นเอง
รูปที่ 2.5 แสดงวิธีการเปลี่ยนเลขฐานสิบไปเป็นเลขฐานห้า
สมมุติว่าเราต้องการที่จะแปลงเลข 35 ในระบบฐานสิบเป็นระบบเลขฐานสอง เมื่อใช้วิธีการเดียวกันจะได้ดังต่อไปนี้
ดังนั้นจำนวน 35 ระบบเลขฐานสิบเมื่อเปลี่ยนเป็นจำนวนในระบบฐานสองจะได้ 100011
สำหรับตัวอย่างต่อไป ถ้าเราต้องการแปลงเลขฐานสิบ 1355 ให้เป็นเลขฐานสิบหก เราก็สามารถทำได้ดังต่อไปนี้
ดังนั้นเลขฐานสิบของ 1355 10 คือ 54BHex (จำนวน 11 ในเลขฐานสิบหกจะใช้สัญลักษณ์ B)
ส่วนในกรณีที่เราต้องการแปลงเลขฐานสิบไปเป็นเลขฐานสอง นอกจากที่จะมีวิธีที่แสดงด้านบนแล้ว ยังมีอีกวิธีที่เร็วกว่านั่นคือ เปลี่ยนให้เป็นเลขฐานแปดก่อน แล้วจึงแปลงจากเลขฐานแปดมาเป็นเลขฐานสองทีหลัง
สมมุติว่าเราจะแปลง 145 10 ให้มาเป็นระบบเลขฐานสอง เราสามารถทำได้ดังนี้
1.เปลี่ยนให้เป็นระบบเลขฐานแปดเสียก่อน
เราจะได้ 14510 เท่ากับ 2218
2.จากนั้นเราก็เปลี่ยนเลขฐานแปดมาเป็นฐานสองอีกที
เมื่อแปลงแล้วจะได้ 0100100012  ซึ่งเป็นค่าที่มาจากเลข 14510 นั่นเอง
2.3 คอมพลีเม้นท์ของ 1และ คอมพลีเม้นท์ของ 2
คอมพลีเม้นท์ของ 1และ คอมพลีเม้นท์ของ 2 ของระบบเลขฐานสอง ถูกคิดเพื่อใช้ดำเนินการสำหรับ PLC หรือ ระบบคอมพิวเตอร์ในการคำนวณทางคณิตศาสตร์ภายในหน่วยประมวลผลกลาง
การคอมพลีเม้นท์ในระบบเลขฐานสองมีความหมายว่าการเปลี่ยนจำนวนนั้นให้เป็นจำนวนลบ (Negative Number) เพื่อให้การดำเนินการทางคณิตศาสตร์พื้นฐานต่างๆเช่น การลบ การคูณ การหาร ถูกกระทำได้โดยผ่านรูปแบบของการบวก เช่น ถ้าเราต้องการนำค่า 40 มาลบด้วย 20 เราก็ทำการทำคอมพลีเม้นท์ของค่า 20 ให้เป็น -20 แล้วนำค่า 40 มาบวกกับค่า -20
2.3.1 คอมพลีเม้นท์ของ 1(One ‘ s Complement)
ถ้าเรามีเลขอยู่จำนวน 5 บิต และเราต้องการที่จะแปลงให้ตัวเลข 5 บิตนั้นให้มีค่าเป็นลบ สมมุติว่าจำนวนนั้นคือ 23 ในระบบเลขฐานสิบ หรือ ถ้าเป็นระบบเลขฐานสอง
101112
ซึ่งในทางปฏิบัติเรามีวิธีอยู่ 2 วิธีที่จะทำให้ตัวเลขเหล่านั้นติดลบ ซึ่งวิธีแรกเราแค่ใส่เครื่องหมายลบลงไปเท่านั้นดังนั้นค่า -23 ก็คือ
-(101112)
ซี่ งเป็นวิธีที่เหมาะสมกับเรามาก แต่สำหรับระบบคอมพิวเตอร์หรือระบบโปรแกรมเมเบิ้ลลอจิกคอนโทรลไม่สามารถนำ วิธีนี้ไปใช้ได้เนื่องจากไม่สามารถแปลผลได้เพราะระบบคอมพิวเตอร์จะประมวลผล ได้สำหรับสัญลักษณ์ที่เป็นเลข 0 กับเลข 1 เท่านั้น ดังนั้นในการแสดงผลจำนวนที่ติดลบ จะใช้ตัวเลขบางตัวซึ่งเราจะเรียกวิธีนั้นว่า วิธีคอมพลีเม้นท์ของ 1(One Complement Method) โดยมีรายละเอียดดังต่อไปนี้
- จะทำการใส่ค่าบิตพิเศษบิตหนึ่งเข้าไปที่ตำแหน่งบิตที่มีนัยสำคัญมาก (Most Significant Bit ) ซึ่งเป็นบิตที่อยู่ซ้ายที่สุด เราจะเรียกบิตนั้นว่า บิตเครื่องหมาย (Sign Bit) โดยถ้าจำนวนนั้นเป็นบวก บิตเครื่องหมายจะเท่ากับ 0 แต่ถ้าจำนวนนั้นเป็นลบ บิตเครื่องหมายจะเป็น 1 และในการเขียนบิตเครื่องหมายเราจะใช้ ตัวเข้มในการเขียน
ดังนั้นจำนวน 23 ถ้าเราใช้วิธีคอมพลีเม้นท์ของ 1เราจะค่าในระบบเลขฐานสองได้ดังนี้
0 101112
- ถ้าเราต้องการแสดงค่าลบของ 0 101112 เราสามารถทำได้โดยการเปลี่ยนค่าจาก 0 เป็น 1 และ จาก 1 เป็น 0 ดังนั้นค่าที่เป็นลบของ 0 101112 คือ
1 010002
-ถ้าจำนวนลบถูกให้มาเป็นระบบเลขฐานสอง คอมพลีเม้นท์ของ 1จะก็สามารถหาได้โดยวิธีเดียวกัน
-1510 = 100002
+1510 = 011112
2.3.2 คอมพลีเม้นท์ของ 2 (Two ‘ s Complement)
คอมพลีเม้นท์ของ 2 ก็มีความคล้ายคลึงกับคอมพลีเม้นท์ของ 1 คือมีบิตพิเศษที่ใช้แสดงเป็นเครื่องหมายของตัวเลข (Sign Bit) แต่ก็มีบางอย่างที่แตกต่างจากคอมพลีเม้นท์ของ 1 ซึ่งสำหรับคอมพลีเม้นท์ที่ 1 จะทำการกลับเลขทุกตัวเป็นจำนวนตรงข้าม แต่สำหรับคอมพลีเม้นท์ของ 2 จะทำการกลับตัวเลขทุกตัวหลังจากที่ไปตรวจเจอบิตที่มีสถานะเป็น 1 ครั้งแรกเท่านั้น โดยจะนับจากขวาไปซ้าย จากตัวอย่าง
+2210 = 0 101102
ดังนั้นคอมพลีเม้นท์ของ 2 คือ
- 2210 = 1 010102
สังเกตได้ว่า ค่าลบของเลข 22 สามารถทำได้ดังนี้ เมื่อเริ่มจากขวาไปซ้าย ตัวเลขตัวแรกเป็น 0 เรายังไม่เปลี่ยนแปลงอะไร เมื่อเริ่มต่อไปพบตัวเลขตัวที่สองซึ่งก็เป็น 1 ดังนั้นตัวเลขหลังจากตัวที่สองนี้จะถูกกลับค่าหมดนั่นเอง
ถ้าเราไปพบเลขที่เป็นลบ เราก็สามารถใช้วิธีคอมพลีเม้นท์ของ 2 ได้โดยวิธีเดียวกันดังต่อไปนี้
-1410  = 1100102
+1410  = 0011102
ตัวอย่างต่อไปจะแสดงการใช้วิธีคอมพลีเม้นท์ของสองเพื่อหาค่าต่างๆดังนี้
+1710 = 0100012
-1710 = 1011112

+710 = 0001112
-710 = 1110012
+110 = 0000012
-110 1111112
ค่าคอมพลีเม้นท์ของ 2 ของเลข 0 จะไม่มี เพราะว่าเมื่อนับจากขวาไปซ้ายแล้วจะไม่พบ 1 เลย ดังนั้นค่าคอมพลีเม้นท์ของ 2 ของเลข 0 ก็คือ 0 นั่นเอง
คอมพลีเม้นท์ของสองเป็นกระบวนการทางคณิตศาสตร์ที่ใช้กันมากในระบบคอมพิวเตอร์และ PLC
2.4 รหัสแบบไบนารี่
ความจำเป็นของ PLC ส่วนหนึ่งก็คือการสื่อสารกับอุปกรณ์ภายนอกชนิดต่างๆ เช่นการรับ ส่งข้อมูลให้กับตัวคอนโทรเลอร์ภายนอก PLC เป็นต้น โดยผ่านอุปกรณ์อินพุตและเอ้าท์พุตต่างๆ ฟังก์ชั่นการสื่อสาร PLC จะมีหน้าที่เกี่ยวกับการจัดการข้อมูลต่างๆเช่น การรับ ส่งข้อมูล การจัดการข้อมูล และการจัดเก็บข้อมูล และข้อมูลเหล่านั้นจะต้องถูกแปลความหมายอีกทีให้เป็นภาษาที่มนุษย์เข้าใจได้ เนื่องจากเครื่องจักรเหล่านี้สามารถที่จะจัดการข้อมูลแบบ ไบนารี่ มนุษย์ต้องนำมาแปลงเพื่อให้เป็นภาษาที่มนุษย์เข้าใจอีกที
วิธีหนึ่งที่จะจัดการข้อมูลแบบไบนารี่ให้แสดงเป็นสัญลักษณ์ต่างๆ วิธีนั้นก็คือวิธีเข้ารหัสแบบไบนารี่ (Binary Coding) โดยทั่วๆไป การเข้ารหัสแบบไบนารี่จะแบ่งเป็น 2 หมวด คือ 1.หมวดที่นำเสนอแบบตัวเลขเพียงอย่างเดียว 2. หมวดที่นำเสนอแบบตัวอักษรและตัวเลขในระบบฐานสิบ

รหัสต่างๆที่สามารถนำเสนอ ตัวเลข สัญลักษณ์ และตัวอักษร ที่เป็นมาตรฐานทางอุตสาหกรรม ส่วนใหญ่ประกอบด้วย 3 กลุ่มดังต่อไปนี้
1.ASCII
2.BCD
3.Gray
2.4.1 ASCII
รหัส Alphanumeric เป็นรหัสซึ่งใช้ประกอบเป็นอักษร สัญลักษณ์ และเลขในระบบฐานสิบ ถูกใช้กระบวนการทางข้อมูลผ่านทางเครื่องมือต่างๆเช่น เครื่องพิมพ์ จอมอนิเตอร์ที่เป็นแบบหลอดแคโทรด (Cathode Ray Tubes :CRTs) ซึ่งมีความจำเป็นที่ต้องใช้ตัวอักษรและสัญลักษณ์ในการแสดงผล
Alphanumeric ประกอบด้วยสัญลักษณ์ภาษาอังกฤษ 26 ตัว (A – Z) ตัวเลข 10 ตัว (0-9) เครื่องหมายทางคณิตศาสตร์ และสัญลักษณ์เว้นวรรค สามารถนำเสนอโดยการใช้รหัส 6 บิต (26 = 64 ตัว) โดยรหัส Alphanumeric จะนำเสนอด้วย ASCII (American Standard Code for International Interchange)
ASCII เป็นรหัสซึ่งสามารถเป็นได้ทั้ง 6,7,8 บิต ถึงแม้ว่าเพียงแค่ 6 บิตก็เพียงพอสำหรับการแสดงตัวอักษร ตัวเลขและสัญลักษณ์พื้นฐาน
การกำหนดรหัส ASCII ให้เป็น 7 บิตเพื่อเพิ่มพื้นที่ในการรองรับตัวอักษรภาษาอังกฤษตัวเล็กด้วย และยังรวมถึงอักขระต่างๆที่ใช้ในระบบการสื่อสารกับตัวเชื่อมต่อและช่องการติดต่อสื่อสารของคอมพิวเตอร์ (Peripherals)
การกำหนดรหัส ASCII ให้เป็น 8 บิต ซึ่งเป็นส่วนขยายจากรหัส 7 บิต โดยเพิ่มบิตอีกหนึ่งบิตเพื่อใช้ตรวจสอบความถูกต้อง ซึ่งเรียกบิตนั้นว่า Parity Bit และในการกำหนดบิตที่ 8 นี้เพื่อให้เต็มไบต์พอดี
รูปที่ 2.6 a แสดงรหัสไบนารี่ ASCII ตัวอักษร Z (1328) จะรับส่งในระบบการสื่อสารแบบซีเรียล (Serial) ระหว่าง PLC กับอุปกรณ์อื่นๆ
รูปที่ 2.6 b ตัวอย่างการส่งข้อมูลอักษร Z ในตัวอย่างนี้จะมีการใช้บิตพิเศษในการเริ่มต้นส่งและการสิ้นสุดการส่ง
รูปที่ 2.6 (a) แสดงรหัส ASCII ของตัวอักษร Z  (b) แสดงการส่งอักษร Z
2.4.2 BCD
ระบบ BCD (Binary Code Decimal) ถูกกำหนดขึ้นเพื่ออำนวยความสะดวกต่อมนุษย์ดังต่อไปนี้ 1.เพื่อให้สามารถป้อนตัวเลขฐานสิบเข้าไปในเครื่องจักรได้ 2.เพื่อให้เครื่องจักรสามารถแสดงผลในระบบเลขฐานสิบได้
ระบบเลขฐานสิบจะใช้ตัวเลขตั้งแต่เลข 0 ถึงเลข 9 แต่ทว่า BCD จะใช้เลขไบนารี่เพียง 4 บิต ตารางที่ 2.4 แสดงตัวอย่างความสัมพันธ์ระหว่างรหัส BCD รหัสไบนารี่และรหัสเลขฐานสิบ

ตารางที่ 2.4 แสดงการนับในระบบเลขฐานสิบเมื่อเปรียบเทียบกับระบบเลขฐานสองและระบบ BCD
ระบบฐานสิบ
ระบบเลขฐานสอง
ระบบ BCD
0
0
0000
1
1
0001
2
10
0010
3
11
0011
4
100
0100
5
101
0101
6
110
0110
7
111
0111
8
1000
1000
9
1001
1001
ระบบ BCD จะแสดงตัวเลขฐานสิบโดยจะนำตัวเลขฐานสิบมาแยกออกเป็นทีละหลัก จากนั้นจะนำเลขฐานสิบนั้นด้วยตัวเลขฐานสอง ตัวอย่างต่อไปนี้จะแสดงการแปลงค่าจากเลข 7493 ในรหัสเลขฐานสิบเป็นระบบเลข BCD
BCD     -->   0111  0100  1001  0011
Dcemal  -->    7       4       9      3
PLC มาตรฐานจะใช้ BCD มาประยุกต์ใช้งานการนำเข้าข้อมูลต่างๆเช่น เวลา ปริมาตร น้ำหนัก เป็นต้น โดยการใช้สวิทช์จำพวกทัมวีล (Thumbwheel Switch :TWS) การแสดงผลโดยการใช้ 7-Segment นอกจากนี้ 7 – Segment ยังสามารถแสดงผลค่าอินพุตจาก Absolute Encoder  และค่าที่ป้อนจากอุปกรณ์อานาล็อกประเภทต่างๆ
รูปที่ 2.7 (a) แสดงอุปกรณ์ 7 Segment  (b) สวิทช์ประเภททัมวีล
ในปัจจุบันนี้ วงจรที่แปลงรหัสจากเลขฐานสิบเป็น BCD และจาก BCD ไปเป็น 7 Segment ถูกสร้างรวมกับอุปกรณ์พวกทัมวีลสวิทช์และอุปกรณ์แสดงผลทางจอ LED
จากรูปที่ 2.8 a ข้อมูลในรูปแบบฐานสิบ จะถูกอุปกรณ์ทัมวีลสวิตช์แปลงไปเป็นระบบ BCD ก่อนที่จะเข้าระบบ PLC โดยจะใช้ขาอินพุต ประมาณ 4 ขาต่อเลข 1 บิต ในระบบเลขฐานสิบ
 และรูปที่ 2.8 b และข้อมูลแบบ BCD จะถูกแปลงเป็นข้อมูลทาง 7 Segment โดยตัว PLC ก่อนที่จะเข้าสู่การแสดงผลด้วย 7 Segment โดยจะใช้ขาเอ้าท์พุต ประมาณ 4 ขาต่อเลข 1 บิต ในระบบเลขฐานสิบ
รูปที่ 2.8 (a) ทัมวีลสวิทช์จะเปลี่ยนจากเลขฐานสิบเป็น BCD เข้าทางอินพุตของ PLC (b) รหัส BCD จะถูกแปลงโดย PLC ให้เป็น 7 – Segment เพื่อส่งไปที่อุปกรณ์แสดงผล
2.4.3 รหัส GRAY
รหัส Gray เป็นการเข้ารหัสในกลุ่มของรหัสวงกลม (Cyclic Code) ซึ่งรู้จักกันว่า Reflected Code และเป็นชุดดั่งเดิมสำหรับตัวแปลงค่าตำแหน่ง ซึ่งมาจากพื้นฐานของระบบเลขไบนารี่ โดยนำเลขไบนารี่มาแก้ไขเพิ่มเติม โดยจำนวนที่ติดกันจะมีการเปลี่ยนแปลงเพียงบิตเดียวเท่านั้น
ตัวเลขไบนารี่มาตรฐาน จะเปลี่ยนมากกว่า 1 บิต เมื่อมีการนับขึ้นที่ค่ามากกว่า 4 ขึ้นไป เช่นจากค่า 3 ไป 4 มีการเปลี่ยนแปลงบิตในรหัสไบนารี่ 2 บิต จาก และ15 ไป 16 มีการเปลี่ยนตัวเลขมากถึง 4 ตัว ซึ่งจะไม่เหมาะสมในการที่จะใช้เป็นรหัสพิจารณาหาตำแหน่งของมุมของ Encoder เพราะมีการเปลี่ยนแปลงรูที่เจาะมาก ดังนั้นรหัสไบนารี่จึงไม่เหมาะสมกับเครื่องมือพวกนี้  ดังนั้นเครื่องมือวัดพวก Encoder ต่างๆใช้การเข้ารหัสแบบ Gray เพราะเพิ่มขึ้นแต่ละค่ามีการเปลี่ยนแปลงแค่บิตเดียว

วิธีการแปลงจาก Binary เป็น Gray Code
G3 = B3 G2 = B2 B3 G1 = B1 B2 G0 = B0 B1
วิธีการแปลงจาก Gray Code เป็น Binary
B3 = G3 B2 = G3 G2 B1 = G3 G2 G1
B0 = G3 G2 G1 G0
ตารางที่ 2.5 แสดงการนับในระบบเลขฐานสิบเมื่อเปรียบเทียบกับระบบเลขฐานสองและรหัส Gray
ระบบฐานสิบ
รหัสไบนารี่
รหัส Gray
0
0000
0000
1
0001
0001
2
0010
0011
3
0011
0010
4
0100
0110
5
0101
0111
6
0110
0101
7
0111
0100
8
1000
1100
9
1001
1101
10
1010
1111
11
1011
1110
12
1100
1010
13
1101
1011
14
1110
1001
15
1111
1000
ตัวอย่างในการประยุกต์ใช้งานรหัสแบบ Gray ใน Optical Absolute Encoder ใน Encoder ประเภทนี้จะประกอบด้วยแผ่นจานหมุน ซึ่งประกอบด้วยส่วนทึบแสงและส่วนที่โปร่งใส และประกอบด้วยแหล่งกำเนิดแสงและตัวรับแสง ซี่งมีบิตตามความละเอียดของ Encoder ซึ่งตัวรับแสงจะอยู่ด้านท้ายของ Encoder ซึ่งจะรับแสงจากรูที่โปร่งแสดงของจานหมุนแล้วจะได้สัญญาณรหัสแบบ Gray เพื่อส่งต่อให้เป็น อินพุตของ PLC ในรูปสัญญานรหัส Gray หรือส่งต่อให้ตัวแปลงให้เป็นสัญญาณ BCD เพื่อต่อเข้ากับระบบ PLC ต่อไป

รูปที่ 2.9 แสดง Absolute Encoder ที่ให้สัญญานเอ้าท์พุตเป็นแบบรหัส BCD และรหัสแบบ Gray
2.5 รีจิสเตอร์เวิร์ด

ดังที่กล่าวไปแล้วว่า PLC สามารถที่จะดำเนินการภายในทั้งหมดด้วยข้อมูลที่เป็น ไบนารี่ ซึ่งเป็นข้อมูลที่ประกอบด้วยรูปแบบที่เป็น 0 และ 1 เท่านั้น เพราะสถานะของอุปกรณ์อินพุตและเอ้าท์พุตจะมีการอ่านและการเขียนจากหน่วยประมวลผลกลางของ PLC ในรูปแบบที่เป็นไบนารี่ (เปิด / ปิด) โดยส่วนมาก การดำเนินการต่างๆจะทำในรูปแบบของกลุ่ม ซึ่งแต่ละกลุ่มจะประกอบด้วย 16 บิต เพื่อแสดงตัวเลขและรหัส  กลุ่มดังกล่าวจะเรียกว่า เวิร์ด (Word)แต่ละเวิร์ด ที่อยู่ PLC จะถูกเก็บโดย รีจิสเตอร์ (Register) หรือ โลเคชั่น (Location) รูปที่ 2.10 แสดงตัวอย่างของ รีจิสเตอร์  16 บิต ซึ่งเป็นรีจิสเตอร์ที่เก็บได้ 16 บิต หรือ 1 เวิร์ด หรือ 2 ไบต์ เราเรียกรีจิสเตอร์ว่า รีจิสเตอร์เวิร์ด


รูปที่ 2.10 แสดงรีจิสเตอร์ 16 บิต หรือ รีจิสเตอร์เวิร์ด
ถึงแม้ว่าข้อมูลที่เก็บในรีจิสเตอร์จะแสดงด้วยเลช 1 หรือ 0 แต่รูปแบบของข้อมูลที่เก็บอาจจะมีลักษณะแตกต่างกันใน PLC เช่น ข้อมูลที่ถูกเก็บอาจจะเป็นข้อมูลประเภทไบนารี่  หรือBCD ก็ได้
2.5.1 Binary Format
ถ้าข้อมูลที่เก็บไว้ในรีจิสเตอร์เป็นรูปแบบไบนารี่ ข้อมูลนั้นจะถูกแปลงให้เป็นระบบเลขฐานสิบได้โดยตรง สำหรับรูปแบบนี้ รีจิสเตอร์เวิร์ดนี้จะสามารถเก็บค่าสูงสุดได้ที่ 6553510 รูปที่ 2.11 จะแสดงค่า 6553510 ในรูปแบบไบนารี่

ถ้ารูปแบบไบนารี่จะต้องการแสดงให้เห็นสถานะของอุปกรณ์ว่าเป็น 1 หรือ 0 ซึ่ง PLC จะแปลความหมายว่า เปิด หรือ ปิด ตัวแสดงสถานะก็จะถูกเก็บไว้ในรีจิสเตอร์เวิร์ด

รูปที่ 2.11 แสดงรีจิสเตอร์เวิร์ดที่เก็บค่าไบนารี่ที่เทียบเท่าค่า 6553510


ถ้าบิตที่มีนัยสำคัญมาก (Most Significant Bit: MSB) ของรีจิตเตอร์เวิร์ด ถูกใช้เป็นบิตเครื่องหมาย ค่าสูงสุดของเลขฐานสิบที่รีจิสเตอร์ 16 บิตจะเก็บได้คือค่าตั้งแต่ -3276710 ถึง +3276710  ดังรูปที่ 2.12

รูปที่ 2.12 แสดงรีจิสเตอร์ 16 บิตกับบิตเครื่องหมาย
2.5.2 BCD Format
รูปแบบ BCD จะใช้พื้นที่จำนวน 4 บิตเพื่อแสดงผลเลขฐานสิบเพียงตัวเดียว ซึ่งพื้นที่ 4 บิตนี้พอเพียงที่จะแสดงผลตัวเลขตั้งแต่ 0 ถึง 9  PLC บางรุ่นจะมีโปรแกรมที่ชุดคำสั่งดำเนินการกับข้อมูลที่มีการเข้ารหัสแบบ BCD

ในรูปแบบ BCD รีจิสเตอร์ขนาด 16 บิตจะสามารถเก็บค่าเลขฐานสิบได้ 4 ตัวเลข ซึ่งสามารถแสดงค่าตั้งแต่ 0000 ถึง 9999 

รูปที่ 2.13 รีจิสเตอร์ที่ประกอบด้วยรหัส BCD 9999


ใน PLC ค่าของ BCD จะถูกเก็บเข้าในรีจิสเตอร์โดยการป้อนอินพุต ตัวอย่างของอินพุตที่ป้อนค่า BCD ก็คือ ทัมวีลสวิทข์ โดย รีจิสเตอร์ 16 บิตจะสามารถรับข้อมูลจากทัมวีลสวิทช์ได้ 4 ตัว

รูปที่ 2.14 แสดงทัมวีลสวิทช์ 4 ตัวส่งค่ารหัส BCD ให้กับ PLC

และเมื่อใช้รีจิสเตอร์ 16 บิตของ PLC ซึ่งภายในประกอบด้วยข้อมูลในรูปแบบของ BCD ที่มีค่า 7815 เพื่อจะแสดงผลของค่าที่อยู่ในรีจิสเตอร์ จึงนำ 7 Segment จำนวน 4 ตัวมาต่อ เมื่อส่งของรีจิสเตอร์ออกทาง PLC ที่เอ้าท์พุตจะได้ดังรูปต่อไปนี้

รูปที่ 2.15 รีจิสเตอร์ขนาด 16 บิตของ PLC ที่เก็บค่าตัวเลข 7815 BCD แสดงค่าออกทาง 7- Segment

ไม่มีความคิดเห็น:

แสดงความคิดเห็น