...หลายปีดีดัก ห่างหายจากการเขียนข้อความ จะเรียกว่าขาจรก็คงไม่ผิดนัก ว่างๆ ก็เอาซะหน่อย
แต่ชีวิตมันก็มีกันบ้างล่ะน่ะ บางมุมก็สนใจเรื่องนั้น นู่น นี่ โน่น เปลี่ยนหมุนเวียนกันไปตามกาล ตามเวลาตามวัย และเงิน..
หลังจากเก็บของในบ้าน ก็พบของเล่นที่ซื้อมาตอนเขาฮิตๆ กัน
มันคือ...
Arduino กับผองเพื่อน นี่เป็นแก๊งค์เล็กๆ และยังมีพี่ใหญ่ PLC FX3U ผู้มากล้นด้วยความสามารถ
ซื้อมาเล่นๆ แผรบๆ ก็เบื่อ เบื่อก็เก็บใส่กล่อง
ช่วงนี้เป็นช่วงโรคระบาด มีเวลาเลยเอามาเล่นกันซะหน่อย
ของที่มีอยู่นี่ก็พอเล่นได้ อีกนาน ตามแต่จะจินตนาการ มีบางชิ้นยังไม่ได้แกะห่อเลยด้วยซ้ำ
เป็นการเล่าสิ่งที่ทำลงไป บ้าบอยังไง ล้าหลัง บ้านนอกยังไง ก็ตามแต่ปัญญาที่มี อย่าหาเอาวิชาการมาเทียบ
เขียนไว้ เข้าทำนองที่ว่า "ของกิน ถ้าไม่กินมันสิเน่า ของเก่าถ้าไม่เล่าสิลืม"
เรื่องที่จะเขียนไว้
เอา HMI OP324-AS V.8 มาแสดงบทเจ้านาย[MASTER] มาต่อกับบรรดาทาส SLAVE RS-485 ลองให้มันสื่อสารกันดู
บรรดานายมันเอาแต่สั่งๆๆๆ ทาสต่างๆ ก็พากันทำตามแบบขัดเสียไม่ได้
แต่ว่าต้องเรียกใช้ทาสให้ถูกชื่อด้วยนะ ไม่งั้นทาสมันทำเป็นไม่รู้ไม่ชี้ เฉยๆ บื้อใบ้กันเลย
คำสั่งมันประมาณนี้
"01 02 03 04 05 06 07 08" เอาแค่ 8 byte แค่นี้พอ อ้อแล้วก็เป็นเลขฐาน 16 หรือที่เรียกกันว่า HEX นั่นล่ะ
จะว่าไปก็จำไม่ได้สักทีว่า bit byte word อะไรยังไง พอวันนี้จำได้ ผ่านไปสักปี มีลืม
กลุ่มคำสั่งมันจริงๆ ถ้าเขียนเป็น array ก็ต้องแบบนี้ ถึงจะสื่อความ
[0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
คู่ของ HEX ทีละสองตัว ทั้งหมด 8 ชุด แล้วไอ้ HEX สองตัวนี่ก็เรียก byte
ถ้าไม่คิดเครื่องหมาย
เลข HEX แต่ละคู่นั่นน่ะ มีค่าน้อยสุด คือ
00
เพราะมันเป็น HEX (เลขฐาน 16) คำว่า 16 ก็หมายถึง ในแต่ละหลักมันมีค่าได้ 16 ค่า/เขียนได้ 16 ตัว คือ
เลข 0 1 2 3 4 5 6 7 8 9 A B C D E และ F นับดูเด้อ ได้ 16 ตัวไหมนั่น
ฉะนั้นและฉะนี้ ค่าที่มากสุดคือ
FF
มันมีสองตัว ตัวแรกมีค่าได้ 16 ค่า(0-F) ตัวถัดไปก็ยังคงมีค่าได้อีก 16 ค่า (0-F) ซึ่งมันเป็น 16 เท่า
ตัวแรกมีค่าได้ 16
ตัวที่สองก็มีค่าได้ 16 ค่า
สองตัวนี้จะมีค่าได้ 16x16 = 256 ค่า แต่มันเป็นเลข 0 ไปหนึ่งตัว ก็เหลือค่าสูงสุด 255
เขียน FF คณิตศาสรตร์นี่มีค่า 255 (ถ้าเขียนเรียงจาก 0 - 255 ก็จะได้ค่าที่ไม่ซ้ำกันทั้งหมด 256 (16x16))
ถ้ามีอีกตัว(คือ HEX สามตัว) มากสุดก็ FFF เขียนได้ทั้งหมด 16x16x16 = 4096 ตัว รวม 0
ค่าสูงสุด FFF ก็คือ 4095
อ้ะ ชักงง ลองกลับมาดูเลขฐาน 10(DEC) บ้าง คำว่าฐาน 10 มันก็มีค่าได้ 10 ค่า/หรือเขียนได้ 10 ตัว
คือ 0 1 2 3 4 5 6 7 8 9 นับได้ 10 ตัวใช่ไหม?
ถ้ามีเลขฐาน 10 สองตัว เลขตัวแรกมีได้ 10 ค่า ตัวที่สองมีได้อีก 10 ค่า
ฉะนั้นเลขฐาน 10 สองตัว xx จึงมีได้ทั้งหมด 10x10 = 100 ค่า คือเขียนไม่ซ้ำกันได้ 100 ตัว รวม 0 ด้วยนะ
เขียนได้ 100 ตัว รวม 0 และค่าที่มากสุดของเลข 2 ตัวนี้ก็คือ 99 ค่าน้อยสุด 00
เลขฐาน 10 สามตัว เขียนได้ 10x10x10 = 1000 ตัว รวม 0 และ 999 ก็คือค่ามากสุด
เห็นไหม เลขฐาน 10 นั้นหลักถัดไปมันมีค่าได้ 10 เท่า!! แบบนี้ไปเรื่อยๆ
10,000 อย่างนี้มี 5 หลัก (และเราก็รู้ว่ามันคือหลักหมื่น หมูมาาาาาก)
อย่าลืมนะแต่ละหลักมันมีค่าได้ 10 ค่า คือ 0-9
พอเห็นแบบนี้มันดูกันต่อ
1 0 0 0 0 มีทั้งหมด 5 ตัวเลข เขียนได้ทั้งหมด 10x10x10x10x10 ตัว
วิชาเลขม.ต้น บอกว่าอย่างนี้มันคือ 10 ยกกำลัง 5 นะจ้ะ (นะจ้ะ พร่องเมิง ...อิ..อันนี้แซวลุง)
จำไว้หน่อยนะว่ามีกี่หลักก็เอาค่าฐาน(ที่บอกว่า 10 16 นั่นน่ะ) มายกกำลังด้วยจำนวนหลักกันเด้อ
เลขฐาน 10 มี 3 หลัก มันก็เขียนได้ทั้งหมด 10^3 =10x10x10 = 1000 ตัว
เลขฐาน 16 มี 3 หลัก มันก็เขียนได้ทั้งหมด 16^3 =16x16x16 =4096 ตัว
และแล้วก็ถึงคิวน้องเล็กสุดท้อง เลขฐานสอง......
BINARY BIN 0 1
ออกทะเลมาไกล จากไทยป่านนี้คงถึงโซมาเลีย ตายคามือโจรแล้วมั้ง
ไหนๆ ออกมาแล้วก็ไปให้สุด สุดทะเลลึกกันเลย
ฐาน 2 หรือ BIN
มันก็คล้ายกันกับฐานอื่นๆ ซึ่งในแต่ละหลัก มันก็มีค่าได้ 2 ค่า คือค่า 0 และค่า 1
และถ้ามีเลขฐานสอง 3 ตัว มันก็มีค่าได้ทั้งหมด 2^3 = 2x2x2 = 8 ค่า รวมค่า 0 ด้วยเน้อ
แวะพักนิด เลขฐานสอง 1 ตัวนี้ ผมเรียกมันว่า 1 bit ถ้ามี 2 ตัวก็เรียก 2 bits, 3 ตัวก็ 3bits
ฐาน 16 เอาแค่ตัวเดียว เอา F นี่แหล่ะ
F ค่าประจำตัวมันคือ 15 (แต่ลำดับ นับจากที่มันต่อแถวกัน มันก็เป็นลำดับที่ 16)
ลำดับ 16 ที่ว่า มันคือเลข 2x2x2x2 (เลขฐานสองจำนวน 4 หลัก นั่นๆๆ 4 ตัวคือ 4 bits เด้อ)
F มันคือ 1111 ค่าของมันคือ 15
(อย่าลืมกันเด้อ ฐานอะไรก็เอาเป็นตัวตั้ง ยกกำลังด้วยจำนวนหลัก จะได้จำนวนเลขทั้งหมดที่เรียงกัน)
ค่าประจำหลัก เอาล่ะหว่า....
ฐานสิบถ้ามันมี 3 หลัก ซึ่งจะเขียนได้ทั้งหมด 10x10x10 = 1000 ตัวเรียงกัน เริ่ม 0 -999
แล้วเลขฐานสิบ เลขที่เขียนอย่างนี้ 155 มันคือ หนึ่งร้อย ห้าสิบ ห้า (พูดช้าๆ ชัดๆ)
แยกตัวประกอบกันสักหน่อย ป.3-4 ก็เริ่มเรียนแล้ว
155 = 100 + 50 +5
1x(100) + 5x(10) + 5x(1)
ในวงเล็บนี่แหล่ะเขาเรียกว่า.....................ค่าประจำหลัก
999 มันก็คือ 9x(100) + 9x(10) + 9(1)
ดูในวงเล็บเรียงกันไป มันคือ (10^2) (10^1) และ (10^0) สัมพันธ์กับลำดับเด้อ และเลข 10 มันคือเลขฐาน!!
อ้อบอกไว้ 10^1 = 10 และ 10^0 = 1 กดเครื่องคิดเลขดูเอาเด้อ
ส่วนการนับรวม 0 ด้วย มันเริ่มจาก 0 1 2...
กลับไปดูเลข 4 bits อีกรอบ อย่างที่บอกไว้ 4 หลัก/4bits ค่าที่มากสุดคือ 1111
1 1 1 1 (มี 4 ตัว เรียงกัน ตำแหน่งตัว 3 2 1 และ 0) ค่าของมันล่ะ แบบเดียวกับเลขฐานสิบข้างบน
1(2^3) + 1x(2^2) + 1x(2^1) + 1(2^0)
8 + 4 + 2 + 1 = 15
F = 1111 = 15 ฐานสิบ
พอจะเห็นแล้วว่า F นี่คือ 4 bits
เพราะฉะนั้นป่านฉะนี้ FF ก็คือ 8 bits (Hex เทียบ BIN หน่อยเถอะ มันคือ 1111 1111)
FF สุดท้ายนี่มัน 8bits และเท่ากับ 1 byte มีค่า 255
ทวนดู 15x(16^1)+15(16^0) = 240 + 15 = 255
และ (2^7) +(2^6) + (2^5) + (2^4) + (2^3) + (2^2) + (2^1) + (2^0) = 128+ 64+32+16+8+4+2+1 = 255
สุดท้าย ก่อนจะรู้ตัวว่ามาทะเลลึก
การรับ-ส่ง คำสั่งของเจ้านายจู้จี้เมื่อตอนต้นเรื่อง ถ้าใช้ Serial port มันจะส่ง 8 bits (ไอ้ HEX สองตัว)
จะช้าจะเร็วก็มันต้องเทียบกับสัญญาณนาฬิกา เขาว่า buad rate
ปกติผมกำหนดให้เจ้านายจู้จี้ กับทาสใช้งานรูปแบบ 9600 8N1 buad rate/8bits/non parity/stop bit 1
ยกยอดไปบทความหน้าเถอะ ยิ่งเขียน ยิ่งเลอะ.....
เขียนที่บ้านพัก 15/09/2564 เวลา 3:00