Saturday 11 April 2020

Serial Communication on Vessel (1)

လျှပ်စစ်ပစ္စည်း တစ်ခုနဲ့ တစ်ခု ဆက်သွယ်တဲ့ Signal တွေ ကြည့်ရင်
  1. Digital Signal ဖြစ်တဲ့ On/ Off (သို့) Short / Open အနေနဲ့ ပေးတာရှိပါတယ်။ 
  2. Analog Signal တွေဖြစ်တဲ့ mA, mV, V, Resistance တန်ဘိုး တစ်ခုခုနဲ့ ပေးပြီး ဆက်သွယ်တာ ရှိပါတယ်။
  3. တစ်ကယ်လို့ အချက်အလက် တစ်ခုမကတဲ့ Data တွေ ပို့ပေးမယ်ဆိုရင်တော့ Communication Signal တွေနဲ့ ပေးပို့ရပါတယ်။ Communication Signal ဆိုတာ ထွေထွေ ထူးထူး မဟုတ်ပါဘူး။ 0 တွေ၊ 1 တွေအဖြစ် ပြောင်းထားတဲ့ data အချက်အလက်တွေ အစဉ်တန်းတွေပါ။

Data Communication မှာ Parallel Communication နဲ့  Serial Communication လို့ ရှိပါတယ်။ Parallel Communication ကတော့ ကြိုးအများကြီးနဲ့ အပြိုင်ပေးပို့တာပါ။ ဥပမာ 8 bits (1 byte) ရှိတဲ့ data ကို ပို့ချင်တယ်ဆိုရင် အနည်းဆုံး data အတွင် ကြိုး ၈ ချောင်း အပြိုင်ဆက်ထားပြီး ပို့တာဆိုတော့ Clock တစ်ချက်တိုင်းမှာ data 1 byte ရောက်နိုင်ပါတယ်။ နမူနာ Parallel Communication တွေကတော့ ကွန်ပြူတာတွေမှာ သုံးတဲ့ ISA, ATA, SCSI, PCI, FSB နဲ့ ရှေ့ပိုင်း Printer Port တွေ ဖြစ်ပါတယ်။
Serial Communication မှာတော့ data bit တွေကို channel တစ်ခုထဲကနေ bit တစ်ခုပြီးတစ်ခု တန်းစီပြီး ပို့ပေးပါတယ်။ အဲဒီတော့ အနည်းဆုံး clock ၈ ချက် ကြာမှ data 1 byte ရောက်ပါမယ်။ (ပုံမှာကြည့်ပါ)
ဒါပေမဲ့ နောက်ပိုင်းမှာ processor speed တွေ ပိုမြန်လာတဲ့အခါ ကြိုးအများကြီး သုံးရတဲ့ parallel communication ကို သိပ်မသုံးကြတော့ပါဘူး။ Serial communication ကို ပိုသုံးလာကြပါတော့တယ်။ Serial communication ရဲ့ အားသာချက်က ကြိုး အရေအတွက် နည်းသွားတယ်။ ပို ရိုးရှင်း သွားပါတယ်။

Serial Communication အကြောင်း ပြောရင် Synchronous နဲ့ Asynchronous ဆိုတဲ့ နှစ်မျိုး အကြောင်းပြောရပါမယ်။ Synchronous Serial Communication ဆိုတာက Data Signal ကြိုးအပြင် Clock Signal အတွက် သီးခြား ကြိုးတစ်ချောင်း ရှိရပါတယ်။ Sender နဲ့ Receiver က Main Clock Signal တစ်ခုထဲကို အတူ ယူသုံးပြီး တစ်နည်းအားဖြင့် Synchronize လုပ်ပြီး Data Transfer လုပ်ပါတယ်။ နမူနာ Synchronous Serial Communication အမျိုးအစားတွေကတော့ I2C, SPI, LIN စတာတွေပါ။ ဒီအမျိုးအစားက Data ပို့တဲ့အခါ၊ Frame တွေ ထည့်စရာ မလို၊ Frame တစ်ခုနဲ့ တစ်ခုကြားတွေ မရှိတာမို့ ပိုမြန်ပါတယ်။

Asynchronous Communication မှာတော့ Clock signal အတွက် သီးခြား ကြိုးတစ်ချောင်း မလိုတော့သလို Clock signal ကို Synchronize လုပ်စရာ မလိုတော့ပါဘူး။ Sender က ပို့ပေးလိုက်တဲ့ Data ထဲမှာ Start bit, Stop bit, Parity bit စတဲ့ Framing bit တွေထည့်ပေးလိုက်ပြီး Receiver က ကိုယ်ဆီရောက်တော့မှ ကိုယ့် clock နဲ့ကိုယ် ပြန်ဖွင့် ဖတ်ရပါတယ်။
ဒါပေမဲ့ Sender နဲ့ Receiver ဟာ Framing နဲ့ baud rate တူရပါတယ်။ Baud rate ဆိုတာကတော့ အမြန်နှုန်း (bit per sec) သတ်မှတ်ချက်ပါ။ ဥပမာ- 9600 bps, 4800 bps စသဖြင့် သုံးကြပါတယ်။ အသုံးများတဲ့ Asynchronous Communication တွေကတော့ RS232, RS422, RS485, USB, CAN, NMEA အစရှိတာတွေပါ။
နောက်တစ်ခု Serial Communication အမျိုးအစားတွေရဲ့ လုပ်ဆောင်ချက် နှိုင်းယှဉ်ကြည့်ရင် သူတို့ Support လုပ်ပေးနိုင်တဲ့ ဆက်သွယ်မှုအမျိုးအစား ဖြစ်တဲ့ Simplex, duplex mode တွေကို သိထားသင့်ပါတယ်။ Simplex ဆိုတာက တစ်လမ်းသွား (one way) ဆက်သွယ်ရေး စနစ်ပါ။ ဥပမာ - ရေဒီယို၊ တီဗွီ လိုမျိုးပါ။ Half Duplex ဆိုတာကတော့ နှစ်ဘက် အပြန်အလှန်တော့ သွားနိုင်တယ်။ တစ်ချိန်မှာ တစ်ခုပဲ သွားလို့ရတာမျိုးပါ။ ဥပမာ - Walkie Talkie တွေလိုပါ။ Full Duplex ဆိုတာကမှ တစ်ပြိုင်နက်ထဲ့ 2 way အပြန်အလှန် ဆက်သွယ်နိုင်တာကို ဆိုလိုပါတယ်။ ဥပမာ - Mobile phone လိုမျိုးပါ။

အရမ်းခေါင်းရှုပ်သွားမှာ စိုးလို့ UART တို့ TTL တို့အကြောင်း မပြောတော့ဘူးနော်။

အဲလောက် သိထားပြီးရင် သင်္ဘောပေါ်မှာ အသုံးများတဲ့ Serial Communication Protocol တချို့ကို နည်းနည်း ပိုအသေးစိတ်ပြောပြပါမယ်။ 

RS232 
အခြေခံ အကျဆုံး၊ အထူးသဖြင့် ကွန်ပြူတာနဲ့ ချိတ်ဆက်ရင် အသုံးအများဆုံး Protocol ပါ။ RS ဆိုတာကတော့ Recommended Standard ကို ပြောတာပါ။ သူ့ရဲ့ တခြား အမည်ကွဲတွေဖြစ်တဲ့ EIA (Electronic Industries Alliance) တို့၊ TIA ( Telecommunication Industry Association) တို့ကိုတော့ လူသိ မများပါဘူး။
RS232 ဟာ Full Duplex mode ကို အသုံးပြုနိုင်ပြီး အများဆုံး baud rate 1 Mbps အထိ သုံးနိုင်ပါတယ်။ အဝေးဆုံး ဆက်သယ်နိုင်တဲ့ ကြိုးအရှည်ကတော့ ပေ ၅၀ (15m) ပါ။ နောက်ထပ် ကန့်သတ်ချက် တစ်ခုက RS232 မှာ Device တစ်ခုနဲ့ တစ်ခု (1 sender - 1 receiver) ပဲ ဆက်သွယ်နိုင် ပါတယ်။ ဒါကို Peer to Peer ဒါမှမဟုတ် Point to Point လို့ ခေါ်ပါတယ်။ RS232 မှာ Device တစ်ခုထက်ပိုပြီး ဆက်သွယ်ချင်ရင်တော့ Daisy Chain နည်းနဲ့ ဆက်လို့ရပါတယ်။ ဥပမာ  Device-1 ရဲ့ Tx ကို  Device-2 ရဲ့ Rx မှာဆက်၊ Device-2 ရဲ့ Tx ကို Device-3 ရဲ့ Rx မှာဆက် စသဖြင့် ဆက်တာမျိုးပါ။ (ပုံကြည့်ပါ)
RS232 မှာ 9 pin နဲ့ 25 pin ခေါင်း အမျိုးအစားတွေ ရှိပေမဲ့ တစ်ကယ် ဆက်သွယ်ဖို့ သုံးတာက ကြိုး ၃ ချောင်းပဲ ရှိပါတယ်။ (ပုံကြည့်ပါ။) ဒီမှာ Common Ground, Transmit(Tx) နဲ့ Receive (Rx) ဆိုပြီး ကြိုး ၃ ချောင်း ရှိပါတယ်။ Receiver ဘက်နဲ့ Sender ဘက်ရဲ့ Rx နဲ့ Tx ကို အပြန်အလှန် (Cross) ဆက်တာကို သတိပြုရပါမယ်။ ဒီနည်းက Unidirectional လို့ ခေါ်တဲ့ data စီးဆင်းတဲ့ လမ်းကြောင်းက တစ်ဘက်သတ်သွားပါတယ်။ Device တစ်ခုက Transmit လုပ်တဲ့ကြိုးဟာ အမြဲ Transmit ပဲလုပ်ပါတယ်။ Receive data အတွက် နောက်ကြိုး တစ်ချောင်းနဲ့ သုံးရပါတယ်။ ဒီ Protocol မှာ Common Ground ကြိုးကို အခြေခံပြီး Data ကြိုးတွေပေါ်မှာ Voltage ကို တိုင်းပါတယ်။ -3V to -15V ကို Logic (1) လို့ သတ်မှတ်ပြီး +3V to +15V ကို Logic (0) လို့ သတ်မှတ်ပါတယ်။ တစ်ခြားနည်းတွေနဲ့ စာရင် သုံးတဲ့ Voltage က မြင့်တယ်လို့ ဆိုနိုင်ပါတယ်။

RS422
​ဒီအမျိုးအစားမှာတော့ Baud Rate 10 Mbps အထိ မြန်လာပါတယ်။ ဆက်သွယ်ရာမှာလည်း sender တစ်ခုကနေ receiver  ၁၀ ခု အထိ အပြိုင် ဆက်သွယ်နိုင်ပါတယ်။ ဒါကို Multi Drop လို့ ခေါ်ပါတယ်။ အဝေးဆုံး ပေ ၄၀၀၀ (1.2 km) အထိ ဆက်သွယ်နိုင်ပါတယ်။
နောက်ထူးခြားချက်က Common Ground မသုံးတော့ပဲ ကြိုး တစ်စုံစီရဲ့ Differential လို့ ခေါ်တဲ့ Voltage ခြားနားချက်ပေါ်မူတည်ပြီး High(1) / Low(0) ကို ဆုံးဖြတ်ပါတယ်။ ကြိုး A နဲ့ B ရဲ့ voltage ခြားနားချက် -3V to -6V ကို Logic (1) လို့ သတ်မှတ်ပြီး +3V to +6V ကို Logic (0) လို့ သတ်မှတ်ပါတယ်။ ဒီမှာလည်း Unidirectional လို့ခေါ်တဲ့ Data တစ်လမ်းသွားပဲ သုံးနိုင်ပါတယ်။ ဒီတော့ Half Duplex (တစ်ဘက်သတ် ဆက်သွယ်မှု) ပဲ သုံးမယ်ဆိုရင် ကြိုး၂ ချောင်းနဲ့ရပါတယ်။ Full Duplex (အပြန်အလှန် ဆက်သွယ်မှု) သုံးမယ်ဆိုရင်တော့ Tx အတွက် ကြိုး ၂ ချောင်း (A & B) ရယ်၊ Rx အတွက် ကြိုး ၂ ချောင်းရယ် ကြိုး ၄ ချောင်း သုံးရပါတယ်။ 

RS485
သင်္ဘောတွေမှာ အတွေ့ရ အများဆုံး Protocol ပါ။ သူ့ရဲ့ အများဆုံး Baud Rate ကလည်း 10 Mbps ပါပဲ။ အဝေးဆုံး ဆက်သွယ်နိုင်တာလည်း ပေ ၄၀၀၀ (1.2km) ပါပဲ။ တချို့စာတွေမှာ 10 km အထိ ရတယ်လို့လည်း တွေ့ရပါတယ်။ တော်တော်များများ အချက်တွေက RS422 နဲ့ တူပါတယ်။ ပိုကောင်းလာတာက Sender လည်း အများ၊ Receiver ကလည်း အများကြီး ဆက်သွယ်နိုင်ပါတယ်။ အများဆုံး Sender ၃၂ ခုနဲ့ Receiver ၃၂ ခုထိ ဆက်သွယ်နိုင်ပါတယ်။ Multi Point လို့ ခေါ်ပါတယ်။ ချိတ်ဆက်တဲ့နေရာတွေမှာ အစွန်ဆုံး Device နှစ်ခုကို Reflection မရှိအောင် 100 ohm resistor တွေနဲ့ terminate လုပ်ဖို့ အကြံပြုပါတယ်။ ကြိုးကိုလည်း နှစ်ပင်လိမ်ကြိုးတွေ သုံးခြင်းအားဖြင့် Noise လျော့ကျစေပါတယ်။ Interference လည်း သက်သာ​စေပါတယ်။ 
RS485 ရဲ့ Data သွားလာမှုက Bidirectional လို့ခေါ်တဲ့ ကြိုး တစ်စုံထဲပေါ်ကနေ အပြန်အလှန် ဆက်သွယ်နိုင်ပါတယ်။ ဒါပေမဲ့ အဲလို သုံးရင် တစ်ဘက်က ပို့ပြီးမှ ပြန်လက်ခံနိုင်တာမို့ Half Duplex Mode ကိုပဲ သုံးနိုင်ပါတယ်။
ဒီ Interface ၃ ခုရဲ့ နှိုင်းယှဉ်ချက်တွေကို ဇယားမှာ ကြည့်ပါ။
အခု ပြောပြီးခဲ့တာတွေကတော့ အသုံးများတဲ့ Serial Communication Protocol တွေပါ။ ဒီဟာတွေက Network တွေရဲ့ OSI အလွှာတွေမှာ အောက်ဆုံး Physical Layer ကို အခြေခံ ပြောထားတာပါ။

OSI model ပါလာပြန်ပြီ။ ပြောချင်တာ များလာပြီဆိုတော့ နောက်တစ်ပိုင်း ဆက်ပြောရပါတော့မယ်။ ခေါင်းရှုပ်သွားမယ်တော့ ထင်တယ်။ ခဏနားလိုက်ပါဦး။ နောက်ရက်မှ ဒုတိယပိုင်း ဆက်ရေးပေးပါမယ်။

ဝင်းအောင် (ပခုက္ကူ)
၁၁-၄-၂၀၂၀

No comments:

Post a Comment