บทที่ 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
ความคิดเห็น