1.
Definisi
Konsep Komunikasi Serial
Komunikasi serial
merupakan komunikasi data
dengan pengiriman data secara
satu per satu dengan
menggunakan satu jalur
kabel data. Sehingga
komunikasi serial hanya
menggunakan 2 kabel
data yaitu kabel
data untuk pengiriman yang
disebut transmit (Tx)
dan kabel data
untuk penerimaan yang disebut
receive (Rx). Kelebihan dari
komunikasi serial adalah jarak pengiriman dan penerimaan dapat
dilakukan dalam jarak
yang cukup jauh
dibandingan dengan komunikasi parallel tetapi kekurangannya adalah kecepatan lebih lambat
daripada komunikasi parallel,
untuk saat ini
sedang dikembangkan teknologi serial baru yang dinamakan USB
(Universal Serial Bus) yang memiliki kecepatan pengiriman dan penerimaan data
lebih cepat disbanding serial biasa. Beberapa contoh : komunikasi Serial RS-232
dan RS-485.
Berikut ini
merupakan gambar rangkaian
dari RS-485 yang digunakan untuk melakukan komunikasi serial:
Gambar 1.1. Gambar Rangkaian RS-485
[1]
RS485 adalah komunikasi data serial yang metode pengoperasiannya adalah
differential, artinya level tegangan pengoperasiannya adalah diferensial dari
Line A dan Line B. line untuk komunikasi serial RS485 adalah 4 wire, 2 wire
untuk Transmitter dan 2 wire lagi untuk receiver, 2 wire yang satu di sebut
dengan Line A,B Transmitter dan 2 wire lainnya Line A,B Receiver, nah sinyal
yang disebut sinyal diferensial itu yaitu adalah diferensial antara Line A dan
Line B
[2]
1.
Perangkat
Interface
Devais
pada komunikasi serial port dibagi menjadi 2 (dua) kelompok yaitu Data
Communication Equipment (DCE) dan Data
Terminal Equipment (DTE). Contoh dari DCE ialah modem, plotter, scanner dll. sedangkan contoh dari
DTE ialah terminal di komputer. Spesifikasi elektronik dari serial port merujuk pada Electronic
Industry Association (EIA) :
- “Space” (logika 0) ialah tegangan antara + 3 hingga +25 V.
- “Mark” (logika 1) ialah tegangan antara –3 hingga –25 V.
- Daerah antara + 3V hingga –3V tidak didefinisikan /tidak terpakai
- Tegangan open circuit tidak boleh melebihi 25 V.
- Arus hubungan singkat tidak boleh melebihi 500mA.
Komunikasi serial membutuhkan port sebagai saluran
data. Berikut tampilan port serial DB9
yang umum digunakan sebagai port serial:
Gambar 2.1.
Port DB9 Jantan
Konektor
port serial terdiri dari 2 jenis, yaitu
konektor 25 pin (DB25 dan 9 pin (DB9)
yang berpasangan (jantan dan betina).
Bentuk dari konektor DB-25 sama persis dengan port paralel. Umumnyua COM1 berada dialamat 3F8H,
sedangkan COM2 dialamat 2F8H.
[3]
2.
Metode
Pengiriman
Komunikasi serial RS485
menggunakan sepasang kabel untuk mengirimkan satu sinyal tegangan antara kedua
kabel saluran selalu berlawanan. Logika ditentukan dari beda tegangan antara
kedua kabel tersebut. SN75176 merupakan IC multipoint RS485 transceiver. Di
dalam SN75176 terdapat sebuah driver dan receiver seperti pada Gambar 1.2.
Gambar 1.2. Bagan IC SN75176
SN75176 dapat mendukung 32 unit parallel dalam satu jalur.
Sensitivitas tegangan input receiver 0,2 V dan jarak maksimum 4000 feet.
SN75176 dapat mendukung 32 unit parallel dalam satu jalur. Sensitivitas
tegangan input receiver 0,2 V dan jarak maksimum 4000 feet.
Pada mode pengiriman
(transmitting), kaki enable kirim DE diberi logika 1. Keluaran A dan B
ditentukan oleh masukan driver D, dimana keluaran A akan sesuai dengan logika
driver D, sedangkan B berkebalikan. Jika input D berlogika 1, maka output A
akan bertegangan 5 Volt dan output B 0 Volt. Sebaliknya jika input D berlogika
0 maka output A bertegangan 0 Volt dan output B 5 Volt. Pada mode penerimaan (receiving), kaki enable
terima RE diberi logika 0. Output receiver R ditentukan oleh tegangan
diferensial antara input A dan B (VA - VB). Jika tegangan diferensial VA – VB
lebih besar dari +0,2 Volt, maka
receiver R akan berlogika 1,
sedangkan jika VA - VB lebih kecil dari -0,2 Volt maka receiver R akan
berlogika 0. Untuk tegangan VA - VB antara -0,2 Volt sampai +0,2 Volt, maka
level logika keluaran tidak terdefinisi.
Mode
pengiriman dan penerimaan data SN75176 ditunjukkan pada Tabel 1.3. dan 1.4.
H = High Level, L =
Low Level, x = Irrelevant, Z = high
impedance (off), ? =
Indeterminate
Jika terdapat gangguan listrik
yang menimpa saluran transmisi, maka induksi tegangan gangguan akan diterima
kedua kabel saluran sama besar. Karena
Receiver membandingkan selisih
tegangan antara dua kabel saluran, maka induksi tegangan tidak akan berpengaruh
pada output. Dengan kemampuan menangkal gangguan yang sangat baik ini, RS485
bisa dipakai untuk membangun saluran transmisi jarak jauh sampai 4000 feet
dengan kecepatan tinggi.
[4]
3.
Contoh
Interface dengan mikrokontroller
Aplikasi
ini merupakan pengembangan dari aplikasi pembacaan suhu dengan SHT11 dengan
penambahan kemampuan RS-485. Protocol yang digunakan adalah protocol yang
sangat sederhana sekedar menunjukan bagaimana jaringan RS-485 bekerja. Dengan
memahami prinsip dasar ini, penggunaan protocol seperti Modbus, DLMS, dan
lain-lain, akan terasa lebih mudah, walaupun sebenarnya saya juga belum pernah
mencoba protocol-protokol tersebut.
Antarmuka Mikro dan RS-485
IC MAX487 merupakan IC
driver RS-485 half-duplex. Pin kendali, terima (RE) dan kirim (DE) disatukan
dan dihubungkan ke P3.2. Dengan konfigurasi ini, jika P3.2 HIGH, MAX487 dalam
posisi mengirim data, sebaliknya jika P3.2, MAX487 dalam posisi menerima
data. Untuk lebih jelasnya, silakan baca datasheet MAX487.
Posisi default adalah
menerima. Ketika ada perintah dari master (PC), dan alamatnya sesuai, maka
ketika harus merespon, mikro akan membuat P3.2 HIGH, lalu mengirim data. Dan
mengembalikan P3.2 ke LOW setelah pengiriman selesai.
Antarmuka PC dan RS-485
Hubungan PC dengan RS-485
pada dasarnya sama dengan hubungan Mikro dan RS-485. Masalahnya, kalau di PC
mungkin yang digunakan adalah dari RS-232 ke RS-485. Oleh karena itu sebelum
masuk ke IC driver, level RS-232 terlebih dahulu dikonvert ke TTL. Untuk
kendali driver digunakan pin RTS.
Jaringan RS-485 disimulasikan dengan Proteus. Hubungan
antara Proteus dengan program aplikasi menggunakan Virtual serial port, seperti
halnya contoh-contoh simulasi komunikasi serial yang ada di blog ini. Oleh
karena itu agak sedikit berbeda dengan RS-485 sebenarnya.
Dalam simulasi ini, COMPIM di Proteus akan terhubung dengan
salah satu port serial virtual, missal COM2, begitu juga dengan aplikasi PC,
missal COM2. Nah kedua COM tersebut dihubungkan oleh Virtual Serial Port dengan
koneksi sebagai berikut:
Oleh karena RTS terhubung
dengan CTS, maka pengendali IC driver RS-485 akan terhubung dengan pin CTS.
Protokol Komunikasi
Seperti telah dijelaskan bahwa dalam contoh ini digunakan
protocol komunikasi yang sederhana. Pada dasarnya ada 3 perintah yang digunakan
- Perintah pembacaan suhu dan kelembaban, menggunakan karakter ‘A’;
- Perintah menyalakan LED, ‘B’
- Perintah mematikan LED, ‘C’
Format perintahnya adalah:
ALAMAT
|
PERINTAH
|
0x0D
|
Alamat menggunakan 2 karakter ‘00’ – ‘FF’. Jika alamat ‘00’,
ini berarti perintah broadcast, artinya semua sensor akan menjalankan perintah
tersebut,namun printah broadcast hanya untuk menyalakan dan mematikan LED.
Ketika menerima perintah, hal pertama yang dilakukan oleh
mikrokontroler adalah mengecek alamat tersebut, jika sesuai maka mikro akan
merespon sesuai dengan perintah yang diterima:
- Jika perintah pembacaan, mikro akan mengirimkan data suhu dan kelembaban dengan format seperti pada contoh blog sebelumnya, misalnya “26.3C;87.3%”
- Jika perintah menyalakan LED, mikro akan mengirim “LED ON”
- Jika mematikan LED, mikro akan mengirimkan “LED OFF”
- Jika perintah broadcast, maka mikro tidak akan mengirimkan apapun
Program Mikro
Program
mikro ini pada dasarnya hasil modifikasi dari program pembacaan SHT11 postingan
sebelumnya. Setelah satu frame data serial diterima, ditandai karakter 0x0D,
program pertama akan mengecek apakah alamat ditujukan untuknya atau bukan. Jika
ya, langsung mengeksekusi perintah tersebut.
Ada
perintah yang membutuhkan jawaban dan ada juga yang tidak, perintag broadcast.
Ketika akan mengirim jawaban, sebelum mengirim data serial, pin kendali RS485,
RS_485DIR, harus di-set. Setelah selesai di-clear kembali agar bisa menerima
perintah selanjutnya.
Yang
terpenting dari program PC ini adalah proses pengiriman data serial:
procedure
TForm1.sendrs485(command: string);
begin
if Port_State then
with ApdComPort1 do
begin
RTS:=true;
Output:=command+#13;
while ApdComPort1.OutBuffUsed>0 do
Application.ProcessMessages;
RTS:=false;
end;
end;
begin
if Port_State then
with ApdComPort1 do
begin
RTS:=true;
Output:=command+#13;
while ApdComPort1.OutBuffUsed>0 do
Application.ProcessMessages;
RTS:=false;
end;
end;
Sebelum
ngirim, RTS dibuat true, kemudian setelah ngirim, program harus nunggu data di
buffer output harus kosong, artinya data telah terkirim semua, baru RTS
di-false-kan kembali agar bisa menerima data dari slave.
terimakasih sangat membantu
BalasHapus