Tabel 3.3 Port Status dengan Input DTMF = 1
~S7 S6 S5 S4
S3 - - -
0 1 0 0 1 1 1
1 Dari Tabel 3.3 diatas terlihat jelas bagaimana perbedaan antara nilai yang
dikirim oleh DTMF dekoder dan yang terbaca pada port status alamat 379. Nilai tersebut yang kemudian dibaca oleh perangkat lunak yang digunakan sebagai
antarmukanya untuk mengetahui perintah ekseskusi selanjutnya.
3.8 Proses Penyampaian Data Lampu
Data pada register status DB-25 tidaklah bersumber dari DTMF dekoder saja. Lampu yang dikendalikan juga berfungsi sebagai input bagi port paralel. Lampu yang
terhubung ke port paralel DB-25 menyampaikan data ke register status secara kontinu. Data yang disampaikan ke port paralel masuk melalui pin 11 dan 10, yaitu ~S7 dan S6
pada register status, hal ini juga dapat dilihat lebih jelas pada Gambar 3.4.
3.9 Proses Pemilihan Data
Sumber data pada DB-25 tidaklah berasal dari satu sumber saja, namun ada 2 dua sumber data, yakni DTMF dekoder dan lampu. Pembacaan data pada register status
dilakukan secara bersamaan bukan dari tiap-tiap pin, yang berarti bahwa data yang dikirimkan oleh lampu dan data yang dikirimkan oleh DTMF dekoder akan dibaca
bersamaan dalam satu kesatuan waktu. Sumber data yang lebih dari satu menimbulkan permasalahan baru, yakni bagaimana cara membedakan apakah data
yang masuk berupa data yang berasal dari DTMF dekoder atau dari perangkat elektronik yang dikontrol, dalam hal ini lampu.
Seperti yang telah dijelaskan diatas bahwa input port paralel dilakukan pada register status. Dalam hal ini, port paralel DB-25 tidak bersifat bi-directional.
Sehingga masukan port paralel hanya bisa dilakukan pada register status, dan pin pada
register status digunakan untuk dua sumber data. Gambaran mengenai hubungan antara handphone, port paralel dan DTMF dekoder dijelaskan pada Gambar 3.7.
1 = port paralel 2 = DTMF decoder
3 = Handphone penerima panggilan = lampu
Gambar 3.7 Hubungan antara DTMF, DB-25 dan Handphone
Dari gambar diatas, dapat dilihat bahwa perangkat yang terkoneksi, dalam hal ini lampu tidak hanya menjadi perangkat yang diberikan data keluaran dari port
paralel, namun juga sebagai sumber data bagi port paralel. Dengan menggunakan rancangan rangkaian tersebut, hanya memungkinkan untuk menghubungkan dua buah
perangkat saja untuk dikendalikan dikontrol.
Kemudian dalam pendefinisian data masukan, pendefinisian terbagi atas dua proses, yaitu pendefinisian mana data yang berasal dari DTMF dekoder, dan proses
pendefinisian nilai data yang diberikan oleh lampu.
3.9.1 Pendefinisian Data DTMF
Untuk dapat memahami bagaimana proses ini terjadi, terlebih dahulu perlu diingat kembali mengenai tabel register status yang digambarkan pada Tabel 3.4.
Tabel 3.4 Port Status alamat 379
~S7 S6 S5 S4 S3 - - -
~Busy Ack PE
Select Error
- - -
Ketika dalam rangkaian terbuka, atau tanpa pengaruh dari perangkat luar, register status bernilai 127, yang dalam biner adalah 01111111. Untuk mecari
bagaimana cara memperoleh data hanya data DTMF saja, dicari satu operator dan operand yang dapat menghasilkan kemungkinan hanya S3, S4 dan S5 yang berpeluang
bernilai logika 1 satu. Maka digunakanlah operasi AND dan operand 56. Dengan menggunakan operasi AND dengan operand 56, maka akan diperoleh data yang
diinginkan, sedangkan data lain akan bernilai 0 nol, dimana untuk saluran status S0 dan S1 masih tercadang, S2 tidak dikeluarkan ke pin DB25. Ilustrasi proses yang
terjadi, digambarkan dalam Tabel 3.5.
Tabel 3.5 Rangkaian Proses Operasi Logika AND pada Register Status
~S7 S6 S5 S4 S3 S2 S1 S0 0 1 1 1 1 1 1 1
Keadaan default
register status
0 1 1 0 1 1 1 1 Diberikan
input dari
DTMF decoder
1 1
1 Oprasi AND dengan operand 56
0 0 1 0 1 0 0 0 Hasil
operasi AND
Tabel 3.5 memperlihatkan gambaran yang jelas mengenai bagaimana pendefinisian nilai DTMF dekoder pada register status dapat dilakukan. Tabel 3.5
menggambarkan contoh pendefinisian data DTMF dekoder dengan nilai data 5 lima , 0101 dalam biner dari data keseluruhan pada register status. Melalui operasi AND
akan dihasilkan nilai 1 satu hanya jika keduanya benilai 1satu. Sehingga hanya ada kemungkinan terbesar 3 tiga bit data yang bernilai logika 1 satu. Berikut algoritma
yang digunakan dalam pendefinisian nilai DTMF dekoder dalam program:
temp := Hwinterface1.InPort378; temp1 := Hwinterface1.InPort379;
nilai := temp1 and 56;
Dari algoritma diatas terlihat bahwa proses yang pertama kali dilakukan adalah membaca data yang ada pada register status dengan alamat 379, kemudian
menyimpannya pada satu variabel, yaitu variabel temp. Kemudian nilai dari variabel temp di-AND kan dengan operand, yakni 56, dan kemudian disimpan dalam variabel
nilai. Untuk melakukan operasi logika tersebut, nilai yang dalam desimal tidak perlu dirubah ke dalam biner terlebih dahulu karena bahasa pemrograman sudah memiliki
kemampuan untuk melakukan operasi logika dengan nilai desimal. Gambaran alur proses pendefinisian nilai DTMF dijelaskan pada Gambar 3.8.
Mengambil data dari register status
alamat 379
Data DTMF AND 56 = nilai
Nilai = nilai div 8
Pemrosesan delphi
Gambar 3.8 Alur proses pendefinisian nilai DTMF
3.9.2 Pendefinisian Nilai Status Lampu
Berikutnya dicari operand dan operator yang digunakan untuk memproses data yang masuk dari lampu. Proses ini bertujuan untuk memilah dan mengetahui nilai yang
dikirimkan oleh lampu. Untuk operasi pendefinisian nilai status lampu tidaklah seperti pada DTMF dekoder, operand yang digunakan untuk kedua lampu tidak bisa
disamakan. Hal ini dikarenakan adanya operasi invers pada S7, ataupun sifat ‘active low’ pada S7, gambaran ini dapat dilihat kembali pada Gambar 2.4, yakni gambar port
status.
3.9.2.1 Lampu -1
Lampu 1 adalah lampu yang terhubung dengan pin 11, yakni S7. S7 yang bersifat aktif low yang berarti memiliki sifat kebalikan dari sinyal listrik lain, akan aktif ketika
sinyal low. Berikut algoritma yang digunakan untuk mengetahui nilai status lampu-1:
temp1 := Hwinterface1.InPortlptdata; nilai := temp1 and 128;
Nilai := nilai div 128;
Penjelasan dari
algoritma diatas adalah: hal yang pertama dilakukan adalah menyimpan nilai yang dibaca dari register status dalam sebuah variabel bernama
temp1, kemudian dilakukan operasi logika dengan operator AND dengan operand 128. Operator AND digunakan karena operator AND hanya akan bernilai 1 satu jika
kedua operand bernilai 1 satu. Sehingga hanya akan ada satu pin yang bernilai 1 satu, yaitu pin 11 yang terhubung ke lampu-1. Dengan demikian hasil operasi hanya
mungkin memiliki dua nilai, yaitu 128 atau 0 nol.
Nilai hasil opererasi AND tersebut selanjutnya di bagi dengan 128, yang memiliki kemungkinan hasil adalah 0 nol dan 1 satu. 0 nol dan 1 satu sudah
jelas menggambarkan keadaan sinyal lampu. Hanya saja ada sedikit perbedaan dari sinyal listrik biasanya. Bila secara umum nilai 1 satu menyatakan lampu dalam
keadaan menyala, maka pada lampu 1 satu, nilai 1 satu menyatakan bahwa lampu dalam keadaan padam, begitu juga sebaliknya.
3.9.2.2 Lampu-2
Lampu-2 memiliki kesamaan proses dengan lampu-1 dalam pendefinisian nilai status yang diberikan lampu. Hanya saja ada perbedaan yang lerletak pada nilai operand dan
pendefinisian status. Berikut algoritma dalam pemrograman untuk pendefinisian nilai status lampu-2:
temp1 := Hwinterface1.InPortlptdata; nilai := temp1 and 64;
Nilai := nilai div 64;
Dari algoritma program diatas terlihat bahwa nilai yang dibaca dari register status alamat 379 disimpan dalam sebuah variabel. Selanjutnya nilai dalam variabel
tersebut di AND kan dengan operand 64. Hasil dari operasi tersebut disimpan kembali dalam satu variabel yang berbeda, dan dibagi dengan operand 64. Hasil yang mungkin
keluar dari operasi tersebut adalah 1 satu dan 0 nol. Disinilah letak perbedaan kedua antara lampu-1 dengan lampu-2. Jika pada lampu-1 nilai 1 satu menyatakan
bahwa lampu padam, pada lampu-2 nilai 1 satu menyatakan bahwa lampu menyala. Hasil akhir tersebut selanjutnya diproses oleh pemrograman.
3.10 Proses Penghidupan Lampu
Jika dibayangkan secara selintas mengenai cara penghidupan lampu, yang terbesit dibenak yaitu bahwa untuk menghidupkan lampu yang dikontrol melalui interface
DB-25 sangatlah mudah. Hanya tinggal mengirimkan nilai 1 satu pada pin yang terhubung dengan lampu yang dikontrol. Namun keadaan itu hanya berlaku jika yang
dikontrol hanya satu buah lampu saja. Hal ini tidak berlaku untuk pengontrolan lampu yang berjumlah lebih dari satu.
Jika menggunakan prinsip seperti diatas, dalam satu keadaan dapat terjadi kemungkinan bahwa ketika dikirimkan nilai logika 1 satu untuk menghidupkan
sebuah lampu dapat mengakibatkan lampu yang telah menyala sebelumnya menjadi padam. Kesalahan ini dapat diilustrasikan dengan rangkaian Tabel 3.6.
Tabel 3.6 Ilustrasi Umum Proses Penghidupan Lampu pada Register Data
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0
Nilai awal
0 0 0 0 0 0 0 1 Perintah
pertama 0 0 0 0 0 0 1 0
Perintah kedua
0 0 0 0 0 0 1 0 Keadaan akhir
0 0 0 0 0 0 1 1 Keadaan yang diharapkan
Tabel 3.6 menggambarkan keadaan seperti berikut: Apabila pada keadaan awal tidak ada satupun lampu yang hidup, yang berarti, data yang dikirimkan pada register
data adalah 0 nol. Selanjutnya, dikirimkan data untuk menghidupkan lampu-1, berarti data yang dikirimkan bernilai 1 satu. Beberapa saat kemudian, user
memberikan perintah untuk menyalakan lampu-2 tanpa mematikan lampu yang sudah menyala sebelumnya. Dari tabel diatas, terlihat bahwa ketika dikirimkan data yang
baru, maka data yang sebelumnya akan terhapus digantikan oleh data yang baru, yang berarti lampu yang telah menyala sebelumnya akan padam bersamaan dengan
hidupnya lampu-2.
Ketika diberikan perintah untuk menyalakan lampu, maka semua lampu yang telah menyala sebelumnya akan padam. Nilai data baru yang diterima secara
menyeluruh langsung menggantikan data yang sebelumnya, sehingga lampu yang pada mulanya menyala akan padam dikarenakan oleh bit 1 satu hanya diberikan
kepada pin yang dituju saja, sedangkan nilai pin yang lain akan ter-reset menjadi 0nol kembali. Oleh karena itu perlu ditambahkan proses logika ataupun aritmatika
untuk mengatasi permasalahan tersebut. Berikut proses yang terjadi untuk menghidupkan lampu-1 dan lampu-2. Proses penghidupan lampu dalam diagram alur
adalah seperti Gambar 3.9.
Gambar 3. 9 Alur proses penghidupan lampu
Keterangan: n = nilai operand yang berbeda-beda untuk tiap lampu.
3.10.1 Proses Menghidupkan Lampu-1
Algoritma untuk menghidupkan lampu dan membaca nilai DTMF pada dasarnya adalah hampir sama. Yakni menggunakan operator logika dan sebuah operand.
Namun operand yang digunakan pada lampu-1 dan lampu-2 tidaklah sama.
Hal pertama yang dilakukan adalah membaca nilai dari register data alamat 378 dan menyimpannya ke dalam sebuah variabel. Operator logika yang digunakan
adalah operator OR. Operator OR hanya akan bernilai 0 nol apabila kedua operand bernilai 0 nol. Variabel yang berisikan nilai awal dari register data di OR kan dengan
operand 1 satu. Karena nilai 0nol hanya akan hadir ketika kedua operand bernilai 0 nol, hal ini berarti bahwa nilai yang ada sebelumnya tidak akan terhapus ataupun
berubah nilainya. Digunakan nilai 1 satu sebagai operand karena lampu-1 yang terhubung dengan D0 akan bernilai 1 satu bila diberi logika 1 satu pada pin D0.
Gambaran proses kejadian untuk menghidupkan lampu diilustrasikan pada Tabel 3.7.
Tabel 3.7 Ilustrasi Proses Penghidupan Lampu pada Register Data
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0
Nilai awal
0 0 0 0 0 0 1 0 Perintah
pertama 0 0 0 0 0 0 0 1
Perintah kedua
Apabila perintah petama telah dieksekusi, dan nilainya dibaca dan disimpan pada satu variabel dan kemudian variabel tersebut di OR kan dengan perintah kedua
maka: 00000010
00000001
+
00000011
Dari perhitungan logika diatas terlihat bahwa hasil dari operasi logika OR nilai perintah pertama dan nilai perintah kedua dapat menghasilkan data yang diharapkan.
Jadi apa yang sebenarnya dilakukan ketika perintah menghidupkan lampu pertama adalah proses mengirimkan data ke register data alamat 378, nilai yang dikirimkan
adalah nilai hasil dari operasi logika OR antara variabel yang menyimpan nilai register data sebelumnya dengan operand 1 satu.
3.10.2 Proses Menghidupkan Lampu-2
Selanjutnya untuk proses menghidupkan lampu-2, proses yang dilakukan sama dengan menghidupkan lampu-1. Perbedaannya terletak pada operand yang digunakan. Jika
lampu-1 menggunakan operand 1 satu, maka lampu-2 menggunakan operand 2 dua dalam prosesnya. Digunakan operand bernilai 2 dua karena pin yang dituju pada
register data akan bernilai 2 dua jika diberi logika 1 satu untuk menghidupkan lampu-2. Sedangkan pin yang lain pada register data di OR kan dengan nilai 0 nol
karena nilai 0 nol pada operasi logika OR tidak akan mempengaruhi nilai sesungguhnya. Berikut perhitungannya:
00000001 00000010
+
00000011
Dengan demikian rangkaian proses yang terjadi untuk menghidupkan lampu-2 adalah pengiriman sebuah nilai misal: X. Nilai variabel X tersebut merupakan hasil
dari operasi logika OR antara nilai register data yang lama dengan operand 2. Hasil proses tersebutlah yang kemudian disampaikan kembali ke register data. Dengan
demikian, variabel X sebenarnya berisikan : X = Y + Z
Keterangan: Z = 2 Y = nilai register data yang lama
3.11 Proses Pemadaman Lampu
Permasalahan untuk menghidupkan lampu ditemukan ketika lampu yang dikontrol berjumlah lebih dari satu. Begitu juga dengan proses mematikan lampu apabila
peralatan yang dikontrol dalam hal ini lampu berjumlah lebih dari satu.
Secara umum, cara yang digunakan untuk mematikan lampu yang diinginkan adalah mengirimkan data 0 nol pada pin yang dituju. Hal ini digambarkan pada
Tabel 3.8.
Tabel 3.8 Proses pemadaman lampu
- - Lamp6 Lamp5
Lamp4 Lamp3
Lamp2 Lamp1
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 0 0
Jika ingin mematikan lampu, hanya tinggal memberikan nilai 0 nol saja. Namun jika hal ini dilakukan, sudah sangat jelas apa yang akan terjadi. Tentu saja
akan mengganggu nilai dari pin-pin yang kemungkinan telah terisi sebelumnya, yang berarti apabila lampu lain yang dalam keadaan menyala akan ikut padam bersamaan
dengan padamnya lampu-5. Prinsip pemadaman ini digunakan hanya untuk memadamkan seluruh lampu sekaligus. Oleh karena itu, lagi-lagi dibutuhkan juga
proses operasi aritmatik ataupun logika untuk proses pemadaman lampu. Proses pemadaman lampu secara umum digambarkan pada Gambar 3.10.
Mengambil data dari register data
alamat 378
Data DTMF AND n = hasil
Pengiriman hasil ke port data
alamat 378
Gambar 3.10 Alur proses pemadaman lampu
Keterangan: n merupakan nilai operand yang berbeda-beda untuk masing-masing lampu.
3.11.1 Proses Pemadaman Lampu-1
Untuk memadamkan lampu-1 tanpa harus mengganggu lampu lainnya berarti dituliskan nilai logika 0 nol pada pin yang sesuai dengan pin pada alat yang
diinginkan saja.
Konsep dasar yang dilakukan adalah sama, yaitu membaca terlebih dahulu nilai data pada register data dengan alamat 378. kemudian nilai tersbut disimpan
dalam sebuah variabel. Dalam pemadaman ini, operator logika yang digunakan adalah operator AND. Namun operand yang digunakan bukanlah nilai yang sama dengan
nilai pin yang dituju pada register data ketika berlogika 1 satu. Untuk lampu-1 digunakan operand 2 dua dalam proses pemadamannya. Penggunaan operand 2
dua untuk memadamkan lampu-1 tidak akan menganggu nilai pin lain yang berada pada port data. Berikut ilustrasi pembuktiannya:
Berikut dicontohkan keadaan yang mungkin terjadi. Apabila keadaan awal kedua lampu dalam keadaan menyala, berarti D0 dan D1 dalam keadaan logika 1
satu.
Tabel 3.9 Gambaran Proses Ketika Lampu 2 Menyala
- - - - - Lamp3 Lamp2
Lamp1 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 1 1
Selanjutnya, dikirimkan data untuk memadamkan lampu-1, berarti data yang dikirimkan bernilai 0 nol.
Tabel 3.10 Gambaran Nilai Saat Memadamkan Lampu
- - - - - Lamp3 Lamp2
Lamp1 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 0 0
Dari tabel 3.10 diatas, terlihat bahwa ketika dikirimkan data yang baru, maka data yang sebelumnya akan terhapus digantikan oleh data yang baru, yang berarti
lampu yang telah menyala sebelumnya akan ikut padam bersamaan dengan padamnya lampu-1. Namun dengan menggunakan operasi AND dan operand 2 dua akan
dihasilkan hal seperti Tabel 3.11. Diasumsikan keadaan awal adalah kedua lampu menyala seperti Tabel 3.11.
Tabel 3.11 Ilustrasi Keadaan Register Data Bila Kedua Lampu Menyala
- - - - - Lamp3 Lamp2
Lamp1 D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 0 0 0 1 1
Selanjutnya, ketika datang perintah untuk mematikan lampu-1, yang terjadi adalah nilai register data di atas di OR kan dengan 2 seperti Tabel 3.12.
Tabel 3.12 Ilustrasi Proses Operasi AND pada Register Data
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 1 0
Keadaan yang diharapkan 1 1 1 1 1 1 1 1 Keadaan
awal 0 0 0 0 0 0 1 0 Operand
2 0 0 0 0 0 0 1 0 Hasil
operasi dengan
AND 0 0 0 0 0 0 1 0
Keadaan akhir
Tabel diatas menunjukkan bahwa dengan menggunakan operasi logika AND, maka hasil yang diperoleh sama dengan hasil yang ingin dicapai. Maka data yang
akan dikirimkan untuk memadamkan lampu-1 adalah data hasil operasi logika tersebut.
3.11.2 Proses Pemadaman Lampu -2
Sama halnya dengan proses menghidupkan lampu-1 yang menyerupai proses menghidupkan lampu-2, bagitu juga dengan proses pemadaman. Proses pemadaman
lampu-2 sejalan dengan proses pemadaman lampu-1, yang berbeda hanyalah operand yang digunakan. Bila memadamkan lampu-1 menggunakan operand 2 dua, maka
untuk memadamkan lampu 2 digunakan operand 1 satu.
Nilai hasil operasi logika OR tersebut lah yang kemudian dikirimkan ke register data alamat 378 untuk mematikan lampu-2. Oleh karena itu, yang dilakukan
bukanlah mengirim nilai baru untuk mematikan, tetapi memproses nilai yang sebelumnya sudah ada di register data.
3.12 Proses Pengiriman Pesan
Segala hal mengenai pengiriman sms ditangani oleh Toxygensms. Sms dikirimkan dengan mengambil status dari edit text yang tersedia dari program. Pengiriman pesan
dilakukan dengan perintah :
OxygenSMS1.SendSMSMessageedit1.Text,balas.Text,167,true,false ,nil;
Prosedur ini berfungsi untuk mengirimkan SMS. Adapun beberapa parameter yang terdapat dalam prosedur ini adalah edit1.text berisi nomor telepon yang dituju,
balas.text berisi isi pesan yang akan dikirimkan, 167 merupakan lama validitas pesan tersebut, true menunjukkan laporan pengiriman diterima, nil bermakna tidak ada
gambar yang dikirimkan.
3.13 Proses Pemeriksaan Data Masuk
Setelah masing-masing proses pengolahan data dijelaskan diatas, selanjutnya yang perlu dipahami dan diketahui adalah bagaimana sistem dapat mengetahui bahwasanya
ada data yang masuk yang dikirimkan oleh sumber. Baik itu bersumber dari DTMF dekoder ataupun dari lampu.
Sistem terus menerus melakukan pengecekan terhadap data yang masuk. Data yang diterima oleh port paralel bersifat latch. Latch berarti bahwa data yang ada
tersebut akan terus ada hingga muncul data berikutnya. Seperti pada lampu, rangkaian lampu terhubung secara langsung sebagai sumber input pada register status yang
berarti keadaan lampu akan terus menerus tersampaikan kepada register status.
Agar respon terhadap data baru dan dilakukan secara cepat, maka dilakukanlah rutin pembacaan nilai register status dengan menggunakan komponen timer yang
tersedia.
Komponen timer bersifat non visual digunakan untuk menjalankan suatu event pada suatu saat ataupun secara berulang-ulang berdasarkan nilai interval tertentu.
Secara tidak langsung, timer mempunyai peranan yang sangat penting dalam sistem ini. Dengan menggunakan timer, dapat dilakukan pengecekan secara terus menerus
terhadap nilai yang disampaikan pada register status.
BAB 4
IMPLEMENTASI DAN UJI COBA SISTEM
Pada perancangan software ini digunakan bahasa pemrograman tingkat tinggi sebagai pengolah data dari dan ke rangkaian dan juga sebagai interface terhadap DB 25,
dengan tambahan tools Hwinterface dan Toxygensms.
Langkah pertama dalam merancang software adalah membuat algoritma program yang merupakan garis besar jalannya suatu program. Adapun algoritma
software yang dirancang secara garis besar adalah sebagai berikut : 1.
Mulai 2.
User melakukan pengaktifan koneksi handphone- PClaptop 3.
Melakukan pemeriksaan nilai DTMF 4.
Eksekusi perintah 5.
Jika tidak ada data yang baru kembali ke awal langkah 3 6.
Selesai
4.1 Implementasi Perangkat Lunak Sistem Pengendali Perangkat Elektronik