มหากาพย์ความสับสนของ RS-232 / RS-232C / RS-422 / RS-485 (ตอนที่ 2)


ถ้าจะให้ “ใช้ได้จริงกับ PLC/เครื่องจักร” ควรเรียนเป็นลำดับ ไม่ใช่อ่านนิยามกระโดดไปมา

ลำดับนี้:

  1. Bit/Byte และเลขฐานสอง
  2. Serial communication
  3. RS232 / RS485
  4. Serial setting (9600,8,N,1)
  5. ASCII protocol
  6. Modbus RTU
  7. Modbus TCP
  8. การ debug หน้างาน

เริ่มบท 1 ก่อน

บท 1: Bit / Byte / Binary แบบช่าง PLC ต้องเข้าใจ

ทุกอย่างใน digital communication สุดท้ายคือ 0 กับ 1

คอมพิวเตอร์ PLC inverter HMI มองข้อมูลเป็นเลขฐานสอง

0 หรือ 1

เรียกว่า bit

8 bit = 1 byte

เช่น

10110010

นี่คือ 1 byte


เพราะวงจรอิเล็กทรอนิกส์แยกได้ง่าย

ไม่มีไฟ = 0
มีไฟ = 1

เช่น

0V = LOW
5V = HIGH

หรือ

0V = 0
24V = 1

ดังนั้น “ข้อมูล” จริง ๆ คือไฟเปิด–ปิดเร็วมาก


ปกติเราใช้เลขฐานสิบ

583

แปลว่า

5×100 +
8×10 +
3×1 +
= 583

ฐานสองก็เหมือนกัน แต่ใช้กำลังของ 2

1011

แตกได้เป็น

1×8 (23)(2^3)
0×4 (22)(2^2)
1×2 (21)(2^1)
1×1 (20)(2^0)

รวม

11

ดังนั้น

1011(₂) = 11(₁₀)

1      = 00000001
2      = 00000010
4      = 00000100
8      = 00001000
16     = 00010000
32     = 00100000
64     = 01000000
128    = 10000000

นี่คือ “น้ำหนักบิต”

ถ้าจำได้ ชีวิต debug PLC ง่ายขึ้นเยอะ


สมมติ input 8 ตัว

Start Bit → X0 X1 X2 X3 X4 X5 X6 X7

สถานะ:

Start Bit → ON OFF ON ON OFF OFF OFF ON

กลายเป็น

10001101 ← Start Bit

คิดค่า:

128 + 8 + 4 + 1
= 141

PLC บางตัวส่งข้อมูล input เป็น decimal แบบนี้

คุณต้องแปลกลับได้


สมมติ inverter ส่ง status มา

ค่า

13

จริง ๆ อาจหมายถึง

00001101

แปลว่า

bit0 = 1
bit1 = 0
bit2 = 1
bit3 = 1

ตีความ:

bit0 = RUN
bit1 = FAULT
bit2 = READY
bit3 = ALARM

ดังนั้นสถานะคือ

RUN = true
FAULT = false
READY = true
ALARM = true

นี่คือเหตุผลที่ต้องอ่าน binary

Bit Masking (การมาสก์บิต) คือเทคนิคในเชิงโปรแกรมมิ่งและการสื่อสารข้อมูลที่ใช้ในการ “เลือก” หรือ “จัดการ” เฉพาะบางบิต (Bit) ภายในชุดข้อมูลไบนารี โดยที่บิตอื่น ๆ ที่ไม่ต้องการจะถูก “ปิด” หรือ “ซ่อน” ไป
เปรียบเทียบง่าย ๆ เหมือนการเอา “แผ่นกระดาษที่มีช่องเจาะรู” (Mask) ไปวางทับบนชุดตัวเลข เพื่อให้เรามองเห็นแค่เลขในตำแหน่งที่เจาะรูไว้เท่านั้น

ทำไมต้องใช้ Bit Masking?

  1. ประหยัดหน่วยความจำ: ในระบบ PLC การเก็บข้อมูล 8 สถานะ (เช่น Run, Stop, Fault, Alarm, Ready, Warning, Reset, Power) เราสามารถเก็บรวมไว้ใน 1 Byte ได้เลย แทนที่จะใช้ตัวแปร 8 ตัว
  2. ความเร็ว: การคำนวณ Bitwise ในระดับ CPU ทำได้เร็วมาก
  3. มาตรฐานสื่อสาร: โปรโตคอลอุตสาหกรรมส่วนใหญ่ (เช่น Modbus) มักจะส่งข้อมูลสถานะมาในรูปแบบนี้ เราจึงจำเป็นต้องใช้การมาสก์บิตเพื่อ “แกะ” ข้อมูลออกมาใช้งาน

สรุปสั้น ๆ: Bit masking คือวิธีการ “กรอง” เอาข้อมูลบิตที่สนใจออกมาจากกลุ่มข้อมูล เพื่อให้รู้ว่าอุปกรณ์หรือเครื่องจักร ณ ขณะนั้นมีสถานะเป็นอย่างไร


อีกเรื่องที่ต้องรู้

เพราะ protocol ชอบใช้

เลขฐาน 16

0 1 2 3 4 5 6 7 8 9 A B C D E F

A=10

B=11

F=15

เช่น

0x41

แปลว่า

65 decimal

และคือ

01000001

ASCII ตัว A

ในงาน serial จะเจอบ่อยมาก

https://www.alpharithms.com/ascii-table-512119/

ความสัมพันธ์ Decimal – Binary – Hex

Decimal (ฐานสิบ)
65

Binary (ฐานสอง)
01000001

Hex (ฐานสิบหก)
41

คือข้อมูลเดียวกันแต่มองคนละรูปแบบ


แบบฝึกหัด (ลองตอบเองก่อน)

00000101

เท่ากับเลขอะไร?

00001111

เท่ากับเท่าไร?

Decimal 10

เขียนเป็น binary ได้ไหม?

Hex

0x0A

คือ decimal อะไร?

ตอบ 4 ข้อนี้ก่อน แล้วจะต่อบท 2 เรื่อง Serial Communication ที่เริ่มเข้าโลก RS232/RS485 จริง ๆ


บท 2: Serial Communication — อุปกรณ์คุยกันยังไง

ก่อนอื่นเข้าใจภาพนี้ก่อน

PLC ไม่ได้ส่งคำว่า

สปีด = 1450

แต่มันส่งเป็น “ชุดบิต”

เช่น

0101010101100010

แล้วอีกฝั่งแปลความหมาย

Serial communication คือ “การส่งข้อมูลทีละบิตเรียงกัน”

แทนที่จะส่งพร้อมกันหลายเส้น


Parallel

ส่งหลายบิตพร้อมกัน

เช่น 8 บิต

1 0 1 0 1 1 0 0

ใช้สาย 8 เส้น

ภาพแบบง่าย

bit0 ──────────
bit1 ──────────
bit2 ──────────
bit3 ──────────
bit4 ──────────
bit5 ──────────
bit6 ──────────
bit7 ──────────

ข้อเสีย:

  • สายเยอะ
  • ไกลไม่ดี
  • timing เพี้ยนง่าย
  • noise ง่าย

จึงไม่เหมาะโรงงาน


Serial (สิ่งที่ใช้จริง)

ส่งทีละบิต

1 → 0 → 1 → 0 → 1 → 1

ใช้สายไม่กี่เส้น

เช่น

TX
RX
GND

หรือ

A
B

สำหรับ RS485

นี่คือเหตุผลที่โรงงานใช้ serial แทบหมด


สมมติจะส่งตัว A

A = ASCII 65

Binary:

01000001

แต่ส่งจริงไม่ใช่แค่ 8 บิตดื้อ ๆ

มันมีการ “แพ็กข้อมูล”

รูปแบบทั่วไป:

Start + Data + Stop

เช่น

0 01000001 1

อธิบาย:

0 = Start bit
01000001 = Data
1 = Stop bit

อีกฝั่งจึงรู้ว่า

อ๋อ เริ่มส่งแล้ว
จบแล้ว


สำคัญมาก

Baud rate = ความเร็วส่งข้อมูล

เช่น

9600
19200
38400
115200

ถ้า 9600

หมายถึงประมาณ

9600 bit/s

ตัวอย่างจริง

PLC:

9600

เครื่องชั่ง:

19200

ผล?

ข้อมูลมั่ว

เช่น

แทนที่จะได้

123.45

ได้

§□×A¥

หรือ timeout

เพราะฟังกันคนละจังหวะ

เหมือนคนหนึ่งพูดเร็ว x2


เวลาคุย serial

ต้องตรงกัน 4 เรื่อง

(1) Baud rate

เช่น

9600

(2) Data bits

มักเป็น

8

หมายถึงข้อมูล 8 บิต


(3) Parity

ใช้ตรวจ error เล็กน้อย

มี

N = None
E = Even
O = Odd

ส่วนใหญ่:

N

(4) Stop bit

มักเป็น

1

ดังนั้นจึงเห็นรูปแบบนี้

9600,8,N,1

อ่านว่า

9600 baud
8 data bits
No parity
1 stop bit

ถ้าไม่ตรง = คุยไม่ได้


TX = transmit = ส่งข้อมูล (เปรียบเหมือนปาก)

RX = receive = รับข้อมูล (เปรียบเหมือนหู)

เช่น

PLC → เครื่องชั่ง

ต้องไขว้ (ปาก→หู, หู→ปาก)

PLC TX → Device RX

PLC RX ← Device TX

หลายคนต่อผิดตรงนี้

แล้วงงว่า

ทำไมไม่ติด


Full duplex

คุยพร้อมกันได้

เหมือนโทรศัพท์

พูดพร้อมกันได้

เช่น RS232


Half duplex

พูดทีละคน

เหมือนวิทยุสื่อสาร

พูดจบ เปลี่ยน

เช่น RS485

Master ถามก่อน

Slave ค่อยตอบ


Serial ไม่มีคนมาคอยบอกว่า

เริ่มตอนนี้นะ

อีกฝั่งจึงอาศัย baud rate เป็นนาฬิกา

เช่น

9600 baud

ทุก bit ต้องใช้เวลาประมาณเท่ากัน

ถ้า clock เพี้ยนมาก

ข้อมูลแตก


ตัวอย่าง

PLC อ่านเครื่องชั่ง

ลำดับคือ

PLC ส่งคำสั่ง

"R"

แปลว่า

Request weight

เครื่องชั่งตอบ

"12.35kg"

ทุกอย่างส่งทีละ bit หมด


เพราะ communication เป็นลำดับ

ตัวอย่าง

PLC ส่ง:

อ่านค่า

รอ 100 ms

ไม่มีตอบ

timeout

อาจเกิดจาก

  • baud rate ผิด
  • TX RX ผิด
  • address ผิด
  • protocol ผิด
  • สายขาด
  • parity ไม่ตรง

เวลาคุยไม่ได้ อย่ามั่ว

เช็คตามนี้

1 สายถูกไหม
2 TX/RX ถูกไหม
3 baud rate ตรงไหม
4 parity ตรงไหม
5 stop bit ตรงไหม
6 protocol ตรงไหม
7 timeout เท่าไร

บทต่อไปจะเริ่มเข้า “ของจริงในโรงงาน”:

RS232 vs RS485 แบบลึก + วิธีต่อสาย + termination resistor + noise + ระยะสาย + multi-drop + debug หน้างาน

ตรงนี้สำคัญมาก เพราะคนทำ PLC พลาดกันบ่อยสุด และเกี่ยวกับงาน Modbus โดยตรง


บท 3: RS232 vs RS485 — ของจริงในโรงงาน

คนจำนวนมากสับสนตรงนี้:

“Modbus RTU ใช้ RS485 ใช่ไหม?”

ตอบ: ไม่เสมอ

ต้องแยกก่อนว่า

  • RS232 / RS485 = วิธีส่งสัญญาณไฟฟ้า (physical layer)
  • Modbus RTU = ภาษา (protocol)

เหมือน

ถนน = RS485
ภาษา = Modbus

ใช้ถนนเดียวกัน แต่พูดได้หลายภาษา


RS232 เป็น serial communication แบบเก่า แต่ยังใช้เยอะมาก

ใช้กับ:

  • PLC ↔ เครื่องชั่ง
  • PLC ↔ barcode scanner
  • PLC ↔ printer
  • PLC ↔ อุปกรณ์เก่า

จุดเด่น:

  • ง่าย
  • point-to-point
  • ตั้งค่าง่าย

ข้อเสีย:

  • ระยะสั้น
  • noise ไม่ทน
  • ต่อหลายเครื่องไม่ได้

โครงสร้าง

คุยกัน 1 ต่อ 1

PLC ←→ Device

สายหลัก

ทั่วไปใช้

TX
RX
GND

ความหมาย:

TX = ส่ง
RX = รับ
GND = reference

ต่อยังไง

ต้องไขว้

PLC TX → Device RX
PLC RX ← Device TX
GND ↔ GND

จำง่าย:

ส่งไป → เข้ารับ


ปัญหาคลาสสิก

ต่อแบบนี้

TX → TX
RX → RX

แล้วไม่ติด

เพราะต่างคนต่างพูด ไม่มีคนฟัง


RS232 เหมาะกับอะไร

เช่น

PLC อ่านเครื่องชั่งข้างตู้

สาย 2–5 เมตร

โอเคมาก

แต่ถ้า 50 เมตรในโรงงาน?

เริ่มเสี่ยง


RS485 คือพระเอกโรงงาน

เพราะ:

  • ไกล
  • noise ทน
  • หลายเครื่องต่อได้
  • เสถียร

จึงใช้กับ

  • inverter
  • meter
  • PLC remote IO
  • sensor network
  • Modbus RTU

RS232 ใช้แรงดันเทียบ GND

RS485 ใช้ “ความต่างแรงดัน”

เรียกว่า differential signaling

มีสาย

A
B

ไม่ใช่ TX/RX


RS485 ไม่สนค่า absolute voltage

มันดูส่วนต่าง

เช่น

กรณี 1

A = 5V
B = 1V

ส่วนต่าง:

+4V

= logic หนึ่งค่า

กรณี 2

noise มา

A = 7V
B = 3V

ส่วนต่างยัง

+4V

อ่านได้เหมือนเดิม

นี่คือเหตุผลว่า

RS485 ทน noise

มากกว่า RS232 มาก


RS232

แบบ 1:1

PLC ←→ Device

RS485

แบบ bus

PLC ─── Drive1 ─── Drive2 ─── Meter

ต่อพ่วงได้หลายตัว

เรียก multi-drop


เพราะหลายเครื่องอยู่เส้นเดียวกัน ต้องมีเลขบ้าน

เช่น

Drive1 = 1
Drive2 = 2
Meter = 3

PLC คุยกับ

Device 2

เครื่องอื่นต้องเงียบ


ปัญหายอดฮิตอันดับหนึ่ง

บางยี่ห้อเขียน

A+
B-

บางยี่ห้อ

D+
D-

บางยี่ห้อกลับกันอีก

เอกสารไม่ตรงด้วย

ดังนั้น

ถ้าไม่ติด ลองสลับ A/B ก่อน

แต่ทำอย่างมีเหตุผล ไม่ใช่สุ่มทุกอย่าง


เวลาเดินสายยาว

ปลายสายมี reflection

เหมือนเสียงสะท้อน

ทำให้ data เพี้ยน

จึงใส่ resistor

มักเป็น

120Ω

ที่ “ปลาย bus”

แบบนี้

120Ω
|
PLC ─── D1 ─── D2 ─── D3
|
120Ω

สำคัญ:

ใส่เฉพาะหัว–ท้าย bus

ไม่ใช่ทุกตัว

มือใหม่ชอบเปิดทุกตัว

แล้วงงว่าทำไม communication แปลก


(หรือบางครั้งเรียกว่า Pull-up/Pull-down Resistor)

ใช้ดึง line ให้มีสถานะนิ่ง

ตอนไม่มีคนส่ง

ลด noise

บาง PLC มี built-in

บาง converter มี DIP switch เอาไว้เปิดใช้งาน


ห้ามต่อแบบดาว ถ้าเลี่ยงได้

ไม่ดี

แบบผิด:

        Drive1
|
PLC ------+------ Drive2
|
Meter

เพราะ reflection เยอะ

ควร daisy chain (ต่อเรียงกันบนบัสเดียวเหมือนโซ่)

แบบนี้

PLC ─── Drive1 ─── Drive2 ─── Meter

คร่าว ๆ

RS232

ใกล้

RS485

หลายร้อยเมตร

แต่ยิ่งเร็ว

ระยะยิ่งสั้น

เช่น

115200 baud

อาจไม่ควรลากยาวมาก


คุยไม่ได้

ไล่แบบนี้

1 Power device ติดไหม
2 A/B ถูกไหม
3 baud rate ตรงไหม
4 address ถูกไหม
5 parity ตรงไหม
6 protocol ถูกไหม
7 เปิด termination เกินไหม
8 star wiring หรือเปล่า
9 timeout สั้นไปไหม
10 มี noise จาก VFD ไหม

ตัวอย่างจริง

PLC อ่าน inverter ไม่ได้

เช็ค:

9600,N,8,1

แต่ inverter:

19200,E,8,1

จบเลย

ไม่มีทางติด


ตอนนี้คุณเริ่มเข้าใจ “สาย” แล้ว

บทต่อไปจะเป็น ASCII protocol ซึ่งสำคัญมากสำหรับเครื่องชั่ง, barcode, serial device เฉพาะทาง และเป็นสะพานก่อนเข้า Modbus RTU เพราะคุณเคยถามเรื่องแปลง Modbus TCP → ASCII มาก่อนด้วย

Scroll to Top