PENDAHULUAN
1.1
Pendahuluan
Man-Machine Interface (MMI) adalah kebutuhan standar di dunia industri
Pengendalian (Control)
MMI
PROSES INDUSTRI
(INDUSTRIAL PROCESSES)
1.2
Pemantauan
(Monitoring and Data
Acquisition)
Tujuan
o Mengetahui cara kerja Servo Motor DC type ED-4400 serta dapat
merangkainya membentuk sistem pengontrolan kecepatan motor loop
tertutup.
sebagai
antarmuka
dengan
PC
dalam
sistem
Batasan masalah
o Pengontrolan yang dilakukan dalam praktikum ini hanya
pengontrolan kecepatan motor bukan pengontrolan posisi motor
pada
BAB II
TINJAUAN PUSTAKA
2.1
diperoleh dan dibuat beberapa fungsi yang berbeda hanya dengan mengganti atau
merubah programnya.
SK-8051 merupakan suatu modul yang dapat digunakan untuk mempelajari
sistem mikroprosesor yang dilengkapi dengan beberapa peripheral tambahan.
Bagian-bagian dari modul SK-8051 adalah :
1. LCD dengan 16 character x 2 baris
2. Eksternal ROM-32KByte, eksternal RAM-32KByte
3. Keypad model Built-in dan program monitor serial RS-232C
4. Program dapat dieksekusi pada eksternal RAM
5. PPI 8255
6. 3 Warna dot matriks
7. Speaker interface
8. 8 Channel Analog/Digital Converter
9. 12 Volt DC, 1A bipolar untuk mengerakkan motor
10. 8 bit FND set yang mengindikasikan 16 antilogaritma
11. 16 bit counter/timer 8253
12. Pin-pin chek counter timer dan A/D Converter
13. Fungsi satu langkah internal/eksternal memory dump, modifikasi data
14. AT89C51 12 V. Programming/Blank Chek
15. Terminal percobaal eksternal untuk P1 dan led display
16. 8 bit Port input inverted buffer, tombol tekan 8 buah
17. 8 bit port output : inverted match 8 buah
18. Select Pin (eks/in) untuk mengantikan fungsi fungsi int/eks ROM
19. Select Pin (ROM/RAM)
20. Ground
21. Power Supl : 110~220V AC input DC 12V/ +5V
DESKRIPSI
KETERANGAN
ROM
PROGRAM MEMORY
RAM
PROGRAM MEMORY + DATA MEMORY
I/O
I/O
FND
FF30
FF31
FF32
FF33
FF34
FF35
FF36
FF37
DOT_A
DOT_B
DOT_C
DOT_CMD
WR_A
WR_B
WR_C
WR_CMD
FF38
L538
operasi logika
transfer data
perintah percabangan.
Aturan penulisan bahasa assembly-nya tidak jauh berbeda dengan bahasa assembly
untuk IBM PC. Masing-masing instruksi dapat dijelaskan sebagai berikut :
ADD (Add Immediate Data)
Operand
A
Accumulator
Data - 256 <= data <= + 255
Format
ADD A, #data
Operasi
(A) (A) + data
Keterangan: instruksi ini menambah 8 bit data langsung ke dalam isi akumulator
dan menyimpan hasilnya pada akumulator
ADD (Add Indirect Address)
Operand
A
Akkumulator
Rr
Register 0 <= r <= 1
Format
ADD A, @Rr
Operasi
(A) (A) + ((Rr))
Keterangan: instruksi ini menambah isi data memori yang lokasinya ditunjukkan
oleh nilai register r ke isi akumulator dan menyimpan hasilnya
dalam akumulator
Contoh:
ADD A, Rl
Laporan Praktek Sistem Control Motor Servo / Hasanuddin Sirait
5
Format
Operasi
Keterangan
Contoh
Keteragan
instruksi ini akan menambah isi akumulator dengan isi data pointer
dan meloncat ke alamat kode sesuai hasil penjumlahan
Contoh
JMP @A + DPTR
JNB (Jump if Bit is Not Set)
Operand
Alamat bit
Alamat kode
Format
JNB Alamat bit, alamat kode
Operasi
(PC) (PC) + 3
Jika (alamat bit) = 0, maka (PC) (PC) + offset relative
Keterangan instruksi ini akan menguji suatu alarnat bit. Jika isinya 0, eksekusi
akan menuju ke alamat kode. Jika isinya 1, instruksi selanjutnya
yang akan dieksekusi.
Format
Operasi
Keterangan
Contoh
MOVC A, @A + DPTR
(A) ((A) + (DPTR))
instruksi ini menjumlahkan isi data pointer dengan ini akumulator.
Hasil penjumlahan merupakan alamat kode memory dan isinya akan
dipindahkan ke akumulator.
MOVC, @A+DPTR
Contoh
MOVX A, @DPTR
Keterangan
Contoh
Format
Operasi
Keterangan
Contoh
Operand
Format
Operasi
Keterangan
Contoh
RLC (Rotate
Operand
Format
Operasi
Keterangan
Contoh
A
RL A
Akumulator
Carry Flag
Contoh
SETB 41.5
Keterangan
Contoh
instruksi ini akan menukar isi nibble bawah dari lokasi memori
yang alamatnya ditunjukkan oleh isi register r dengan isi nibble
bawah akumulator.
XCHD A, @R0
Organisasi memori
Memori pada mikrokontroller keluarga MCS-51 dibagi menjadi dua bagian,
yaitu : program memori dan data memori. Pada program memori dan data memori
terpisah secara logika, dengan membedakan sinyal yang mengaktifkannya. Untuk
mengakses program memori digunakan sinyal PSEN, sedangkan untuk data
memori digunakan sinyal RD dan WR. Hal ini menyebabkan processsor keluarga
Tetapi pada mikrokontroler 8031/ 8051/ 8751 upper 128 byte RAM tidak
tersedia, daerah memori tersebut hanya ada pada mikrokontroler 8052.
2.1.2 ADC (Analog to Digital Converter)
Analog to Digital Converter (ADC) adalah sebuah piranti elektronik yang
banyak digunakan oleh perangkat-perangkat digital berupa komputer dan
mikroprosesor Kebutuhan akan ADC saat ini sangat penting karena untuk
mengolah isyarat analog oleh perangkat digital tidak akan bisa diproses. Jadi ADC
menjadi jembatan antara perangkat analog dan perangkat digital. Setelah data
diproses oleh komputer atau perangkat digital yang lain, data digital yang
dihasilkan dapat diubah menjadi data analog kembali dengan menggunakan
perangkat Digital to Analog Converter.
Contoh ADC 8 bit yang mampu menerima 8 input dan banyak digunakan
ialah ADC 0808. ADC ini mampu diprogram umtuk memulai konversi melalui
pin SC (Start Conversion), mampu juga berjalan dengan mode free running,
artinya akan mengkonversi terus menerus sinyal input yang masuk dengan cara
menghubungkan pin EOC (End of Conversion) ke SC. Gambar 2.3 adalah
diagram penyemat ADC 0808
In3
In4
In5
In6
SC
EOC
D3
OE
Clock
Vcc
Vref (+)
Gnd
D1
A
D
C
0
8
0
9
In2
In1
In0
ADD A
ADD B
ADD C
ALE
D7
D6
D5
D4
D0
D2
perbedaan ini ada beberapa pin yang termasuk dalam kategori yang sama.
Misalnya, untuk data hasil pengubahan terdiri dari 8, pemilihan alamat saluran
terdiri dari 3 pin dalam kategori yang sama.
Tabel 2.4 Deskripsi pin-pin ADC 0808
No pin
1-5
26-28
Simbol
In7 In3
In0 In2
21-18
17
14
8
15
10
23
24
25
6
22
7
9
12
16
11
13
D7 D4
D0
D1
D3
D2
Clock
ADD A
ADD B
ADD C
Star Conversion
ALE
EOC
OE
Vref(+)
Vref(-)
VCC
GND
I/O
Deskripsi
I Input analog pin, salah satu dari pin dapat
I dipilih, tergantung pada pengaturan data pin
ADD A, ADD B ADD C.
O Pin output ini adalah hasil dari pengubahan.
O Hasilnya adalah 8 bit data paralel.
O
O
O
I Masukan detak
I Pin input untuk pemilihan saluran masukan
I analog.
I
I Pin untuk memulai konversi
I Address Latch Enable, penguncian alamat
I Pin untuk sinyal akhir conversi
I Output Enable, agar output dapat dibaca
- Tegangan referensi +
- Tegangan referensi - Pin catu daya
- Pin ground
ADD A
L
L
L
L
H
ADD B
L
L
H
H
L
ADD C
L
H
L
H
L
5
6
7
2.2
H
H
H
L
H
H
H
L
H
mengkonversi data digital menjadi data analog. Salah satu jenis DAC yang umum
adalah DAC 0808, yaitu merupakan digital to analog converter R-2R 8 bit yang
dilengkapi dengan sumber arus acuan dan 8 buah transistor saklar untuk
mengarahkan arus biner yang lazim berlaku yaitu 2mA. DAC0808 menpunyai
waktu pemantapan 150 nS dan ketelitian relatif LSB. Gambar 2.4 seperti
yang ditunjukkan di bawah ini adalah konfigurasi penyemat dari DAC 0808.
NC
Gnd
Vee
Iout
D7
D6
D5
D4
1
2
3
4
5
6
7
8
DAC
0
8
0
8
16
15
14
13
12
11
10
9
kompensasi
V reffVreff+
Vcc
D0
D1
D2
D3
0V
START
STOP
Estndar ini hanya menyangkut komunikasi data antara komputer (Data Terminal
Equipment DTE) dengan alat-alat pelengkap komputer (Data CircuitTerminating Equipment-DCE). Estndar RS232 inilah yang biasa digunakan pada
port serial IBM-PC kompatibel.
Stndar sinyal serial RS232 memiliki ketentuan level tegangan sebagai
berikut :
1. Logika 1 disebut Mark terletak antara -3 Volt hingga -25 Volt.
2. Logika 0 disebut space terletak antara +3 Volt hingg +25 Volt.
3. Daerah tegangan antara -3 Volthingga +3 Volt adalah invalid level, yaitu
daerah tegangan yang tidak memiliki level logika pasti sehingga harus
dihindari. Demikian juga, level tegangan lebih negatif dari -25 Volt atau lebih
positif dari +25 Volt juga harus dihindari karena tegangan tersebut dapat
merusak line driver pada saluran RS232.
Gambar 2.6 berikut ini dalah contoh level tegangan RS232 pada
pengiriman huruf A dalam format ASCII tanpa bit paritas.
+25V
0V
1
0 0 0 0 1 0 STOP
-25V
START
Gambar 2.6. Level tegangan RS232 pada pengiriman huruf A tanpa bit paritas
2.3.3 Flow Control
Jika kecepatan tranfer data dari DTE ke DCE (misalnya komputer ke
modem) lebih cepat daripada transfer data dari DCE ke DCE (misalnya modem ke
modem), cepat atau lambat kelilangan data akan terjadi karena buffer pada DCE
akan mengalami over flor. Untuk itu diperlukan flor control untuk mengatasi hal
tersebut.
Dikenal dua macam flow control, yaitu secara software dan secara hardware.
Flow control secara software atau sering disebut Xon/Xoff flor control
menggunakan karkter Xon (tipikalnya karkter ASCII 17) dan karkter Xoff
(tipikalnya karkter ASCII 19) untuk melakukan kontrol. DCE akan mengirimkan
Xoff ke komputer untuk memberitahukan komputer agar menghentikan
pengiriman data jira buffer pada DCE telah penuh. Jika buffer telah kembali siap
menerima data, DCE akan mengirimkan karkter Xon ke komputer dan komputer
akan mengirimkan data selanjutnya sampai data terkirim semua atau komputer
menerima carcter Xoff lagi. Keuntungan flow control secara software ini dalah
hanya diperlukan kabel sedikit karena carcter control dikirimkan lewat saluran
Tx/Rx. Akan tetapi kecepatan pengiriman data menjadi lambat.
Flow control secara hardware atau sering disebut RTS/CTS flow control
menggunakan dua kabel untuk melakukan pengontrolan. Komputer akan menset
saluran Request To Send jikan akan mengirimkan data ke DCE. Jika buffer di
DCE siap menerima data, maka DCE akan membalas dengan menset saluran
Clear To Send dan komputer akan mulai mengirimkan data. Jika buffer telah
penuh, maka saluran akan direset dan komputer akan menghentikan pengiriman
data sampai saluran ini diset kembali.
Nama
Sinyal
DCD
RxD
TxD
DTR
GND
DSR
RST
CTS
RI
Direction
Keterangan
in
in
out
out
in
out
in
in
COM1
3F8h
3F8h
3F8h
3F9h
3F9h
3FAh
3FBh
3FCh
3FDh
3FEh
TX Buffer
RX Buffer
Baud Rate Divisor Match LSB
Baud Rate Divisor Match MSB
Interrupt Enable Register
Interrupt Identification Register
Line Control Register
Modem Control Register
Line Status Register
Modem Status Register
COM2
2F8h
2F8h
2F8h
2F9h
2F9h
2FAh
2FBh
2FCh
2FDh
2FEh
Angka Pembagi
0180h
0C00h
0060h
0040h
0030h
0018h
000Ch
Register Baud Rate Divisor Match bisa diisi jira bit 7 pada register Line
Control Register diisi logika 1.
5. Interrupt Enabled Register, digunakan untuk menset interupsi apa saja yang
akan dilayani komputer. Tabel 2.9 berikut ini dalah tabel rincian bit pada
Interrupt Enabled register.
Tabel 2.9. Rincian bit pada Interrupt Enabled Register.
Nomor bit
0
1
2
3
4,5,6, dan 7
Keterangan
1 : Interupsi akan diaktifkan jika menerima data
1 : Interupsi akan diaktifkan jika register Tx kosong
1 : Interupsi akan diaktifkan jika ada perubahan
keadaan pada Line Status Register
1 : Interupsi akan diaktifkan jika ada perubahan
keadaan pada Modem Status Register
Diisi 0
1 dan 2
3,4,5,6, dan 7
Keterangan
0 : Interupsi menunggu
1 : No interrupt pending
00 : Prioritas tertinggi oleh Line Status Register
01 : Prioritas tertinggi oleh register Rx jika menerima data
10 : Prioritas tertinggi oleh register Tx telah kosong
11 : Prioritas tertinggi oleh Modem Status Register
Diisi 0
7. Line Control Register, digunakan untuk menentukan jumlah bit data, jumlah
bit parity, jumlah bit stop, serta untuk menentukan apakah baud rate divisor
dapat diubah atau tidak. Tabel 2.11 berikut ini dalah tabel rincian bit pada
Line Control Register.
Tabel 2.11 Rincian bit pada Line Control Register.
Nomor bit
0 dan 1
3
4
5
6
7
Keterangan
Jumlah bit data
00 : Jumlah bit data dalah 5
01 : Jumlah bit data dalah 6
10 : Jumlah bit data dalah 7
11 : Jumlah bit data dalah 8
Bit Stop
0 : Jumlah bit stop adalah 1
1 : Jumlah bit stop adala 1,5 untuk 5 bit data dan 2 untuk 6
hingga 8 bit data
Bit Parity
0 : Tanpa Parity
1 : Dengan Parity
0 : Parity ganjil
1 : Parity genap
1 : Bit Parity ikut dikirimkan (stick parity)
0 : Set break control tidak diaktifkan
1 : Set break control diaktifkan
0 : Baud rate divisor tidak dapat diakses
1 : Baud rate divisor dapat diakses
Keterangan
Bit DTR
0 : Saluran DTR diaktifkan (aktif 0)
1 : Saluran DTR dibuat normal (tidak aktif)
Bit RST
0 : Saluran RST diaktifkan (aktif 0)
1 : Saluran RST dibuat normal (tidak aktif)
Bit OUT1, digunakan untuk penghubung ke perangkat lain,
dapat dibuat logika high atau logika low. Secara normal tidak
digunakan.
3
4
5, 6, 7
Keterangan
1 : Menyatakan adanya data yang masuk pada buffer Rx
1 : Data yang masuk mengalami overrun
1 : Terjadi kesalahan pada bit parity
1 : Terjadi kesalahan framing
1 : Terjadi Break Interupsi
1 : Menyatakan Rx telah kosong
1 : Menyatakan bahwa Trasmitter Shift Register telah kosong
Diisi 0
Keterangan
1 : Menyatakan adanya perubahan keadaan di saluran Clear To
Send.
1 : Menyatakan adanya perubahan keadaan di saluran Data Set
Ready
1 : Menyatakan adanya perubahan keadaan di saluran Ring
Indicator dari low ke high
1 : Menyatakan saluran Clear To Send (CTS) sudah dalam
keadaan aktif
1 : Menyatakan saluran Data Set Ready (DSR) sudah dalam
keadaan aktif
1 : Menyatakan bahwa saluran Ring Indicator sudah dalam
keadaan aktif
1 : Menyatakan bahwa saluran Receiver Line Signal Detect
(DCD) sudah dalam keadaan aktif
Port : Menentukan port dari Com yang digunakan apakah COM1, COM2,
COM3 dan seterusnya
Connected : Jika bernilai true, maka koneksi ke COM aktif dan jika
bernilai false maka koneksi ke COM tidak aktif.
tombol yang terletak pada bagian toolbar dapat ditambah atau dikurangi sesuai
kebutuhan.
Component Pallete
Component Palette berisi kumpulan ikon yang melambangkan komponenkomponen yang terdapat pada VCL (Visual Component Library). Pada Componen
Palette Anda akan menemukan beberapa page control, seperti Standart,
Additional, Win32, System, Data Access dan lain-lain seperti tampak pada
gambar 2.9.
Object Inspector
Digunakan untuk mengubah properti atau karakteristik dari sebuah
komponen. Object Inspector terdiri dari dua tab, yaitu Properties dan Events
seperti gambar 2.12 di bawah ini.
komponen. Apabila mengklik kanan salah satu item yang terdapat di dalam
diagram pohon, dapat dilihat konteks menu komponen versi sebelumnya. Untuk
mengakses menu secara penuh, klik kanan pada komponen yang sama dalam
form, data module, atau frame.
2.4
Operational Amplifier
Operasional Amplifier (Op-Amp) adalah piranti elektronik yang bisa
Vo
R1
R2
Vout = 1 +
xVin
R2
R1
R2
Vin
Vo
R1
xVin
R2
R3
V2
Vn
Vo
Rn
Vout =
xV 1 +
xV 2 + .......... +
xVn
R3
Rn
R2
2.5
Servo Motor DC
Servo Motor DC type ED-4400 adalah servo system yang mempunyai
berberapa modul. Tabel 2.15 dan Gambar 2.16 adalah tabel deskripsi fungsi dan
gambar skema rangkaian dari tiap modul tersebut.
Tabel 2.15. Deskripsi fungsi tiap modul ED-4400 servo system
Modul
U-151
U-152
U-153
U-154
U-155
U-156
U-157
U-158
U-159
U-161
Deskripsi
Dual Attenuator (0, 9/10 ....1/10 attenuations)
Summing Amplifier (gain : 0 dB, EXT, NET)
Pre-amplifier (gain : 20 dB)
Motor driver amplifier (10 watts)
Tacho Amp Unit
DC power suplly ( 15V 0.2 and motor power)
Potensiometer (reference) (1K or 10K 5W)
Potensiometer (Motor Coupling) (1K or 10K 5W)
Tachometer (FS 4000 RPM)
Servo motor :
- Motor : 12V, 4.5W
- Tacho Generator : Aprox 3Vp-p / 4000RPM
Function Generator (0.1 1Hz, 1Hz-10Hz and Ramp output)
Magnet Brake :
- Air gap : 4mm, 10 step variable
- Input Power : AC 220V, 50 60Hz
U-162
U-163
-O/L
-15V
+O/L
COM
-O/L
+5V
+O/L
+
-+
U-153
U-156
DC AMPERE +
ON
U-154
OFF
Tacho Motor
-
T
P
O
M
IN
GEAR
U-161
U-159
U-155
BAB III
PERANCANGAN DAN ANALISIS
Man-Machine Interface untuk Sistem Servo Motor DC terdiri dari dua
bagian yaitu perangkat keras dan perangkat lunak. Perangkat kerasnya terdiri dari
satu set sistem servo motor DC, Microprocessor Trainer SK-8051, rangkaian
Digital to Analog Converter, rangkaian penyesuai level tegangan, dan beberapa
PC yang berfungsi sebagai server MMI dan Client MMI sedangkan perangkat
lunaknya yaitu software Microprocessor Trainer SK-8051, software server dan
Client MMI yang dibuat dalam bahasa pemrograman Borland Delphi Enterprise
Edition. Gambar 3.1 berikut ini adalah blok diagram Man-Machine Interface
untuk Sistem Servo Motor DC.
MICROPROCESSOR
TRAINER SK - 8051
DIGITAL TO
ANALOG
CONVERTER
PENYESUAI LEVEL
TEGANGAN
PENYESUAI LEVEL
TEGANGAN
SISTEM SERVO
MOTOR DC
RS232
SERVER MMI
(PC)
CLIENT MMI
(PC)
CLIENT MMI
(PC)
Jaringan komputer
Gambar 3.1. Blok Diagram Man-Machine Interface untuk Sistem Servo Motor
Berikut ini penjelasan, rancangan, dan analisis dari masing-masing blok pada
gambar 3.1 di atas.
3.1
Perangkat Keras
ED-4400 servo
rangkaian servo motor DC. Dalam rancangan ini digunakan DAC0808. Gambar
3.2 adalah gambar rangkaian DAC0808 sebagai berikut :
3K
Port P1
AT89C51
(SK-8051)
D7
D6
D5
D4
D3
D2
D1
D0
5 13 14
6
15
7
2
8 DAC
9 0808
10
4
11
11
12 3
+15V
3K
1K
741
1uF
Vout (0V-+5V)
0V
+2,5
+5V
Vin
-1,1V
Gambar 3.3. Grafik Masukan dan Keluaran Rangkaian Penggeser dan Penyesuai
level Tegangan DAC0808
2,2
Vin 1,1
5
2,2K
Vin
+15
V
5K
30K
Vou
1K
5K
Vin
+15
V
1K
30K
+
Vo
Gambar 3.5. Rangkaian Lengkap Penggeser Level dan penyesuai Tegangan DAC
-O/L
-15V
+O/L
COM
-O/L
+15V
+O/L
+
-+
U-156
DC AMPERE +
ON
U-154
U-153
OFF
Tacho Motor
-
T
P
O
M
IN
GEAR
U-161
U-159
U-155
8051. Tugas utama rangkaian ini adalah menggeser setengah level tegangan
negatif keluaran servo motor DC dari -10,6V sampai +10,6V ke level tegangan
positif sekaligus menyesuaikan level tegangan tersebut agar masuk dalam range
0V sampai +5V seperti yang diinginkan oleh masukan rangkaian ADC0808.
Untuk merealisasikannya dibuat grafik linier keluaran Servo Motor DC (sebagai
masukan rangkaian) dan masukan rangkaian ADC0808 (sebagai keluaran
rangkaian) seperti gambar 3.7 berikut ini :
Vout
+5V
2,5V
Vin
-10,6V
0V
+10,6V
Gambar 3.7. Grafik Masukan dan Keluaran Rangkaian Penggeser Level dan
Penyesuai Tegangan Servo Motor DC
Persamaan matematis dari grafik tersebut adalah :
Vout =
5
Vin + 2,5
21,2
50K
30K
Vout
1
K
50K
Vin
+15
V
1K
30K
+
Vout
Gambar 3.9. Rangkaian Lengkap Penggeser Level dan penyesuai Tegangan Servo
Motor DC
F. Server/Client MMI
MMI merupakan sistem interface yang digunakan oleh pengguna (operator)
dalam melakukan monitoring dan pengendalian sistem. MMI dapat berupa Sistem
komputer yang terdiri komputer server, komputer-komputer klien yang saling
terkoneksi dalam suatu jaringan.
Dalam praktikum ini dibangun sistem MMI berupa :
-
Perangkat jaringan (sistem wireless) : 1 buah Access Point & 1 buah USB
Wireless Client untuk komputer server & 2 buah builtin wireless client
pada laptop klien
Melakukan setup wireless pada komputer server dan laptop klien dan access
point
3.2
Perangkat Lunak
Agar dapat dapat bekerja menjadi sebuah Man-Machine Interface untuk
Sistem Servo Motor DC, perangkat keras seperti yang dijelaskan di atas harus
didukung oleh perangkat lunak (software). Dalam hal ini ada tiga bagian
perangkat lunak yang dibuat yaitu perangkat lunak pada mikrokontroller (modul
SK-8051), perangkat lunak pada MMI-Server, dan perangkat lunak pada Client.
Ketiga perangkat lunak tersebut mempunyai cara kerja yang berbeda.
Data siap
diterima ?
Y
Data =Buffer
Port1 = Data
Baca Data ADC
Y
SBuff = Data
Selesai
0FF38H
0FF40H
0FF41H
0FF42H
0FF43H
0FF48H
0FF49H
0FF4AH
MOV TMOD,#20H
MOV TH1,#0FDH
MOV SCON,#50H
SETB TR1
RET
RX:
JNB RI,$
MOV A,SBUF
MOV P1,A
CLR RI
RET
TX:
MOV SBUF,A
JNB TI,$
CLR TI
RET
KONV:
MOV DPTR,#CTC_CWR
MOV A,#01110110B
MOVX @DPTR,A
MOV DPTR,#CTC_1
MOV A,#10
MOVX @DPTR,A
MOV A,#0
MOVX @DPTR,A
CALL T_adc
MOV DPTR,#ADC_1
MOVX @DPTR,A
MOV B,#100
DJNZ B,$
MOVX A,@DPTR
MOV DPTR,#L563
MOVX @DPTR,A
RET
T_adc:
PUSH 1EH
PUSH 1FH
MOV 1EH,#100
T_a1:
MOV 1FH,#0
DJNZ 1FH,$
DJNZ 1EH,T_a1
POP 1FH
POP 1EH
RET
END
3.2.2 MMI-Server
Man-Machine Interface Server adalah software yang dirancang untuk
mengatur koneksi Client dan memberikan layanan tranfer data dari client ke
server untuk mengatur kecepatan servo motor.
Linsting Program
unit UnitMMI;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ScktComp, jpeg, Buttons, CPort;
const WM_REFRESHCLIENT = WM_USER + 100;
type
TFormServer = class(TForm)
Timer1: TTimer;
ServerMMI_1: TServerSocket;
ServerMMI_2: TServerSocket;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label6: TLabel;
Label7: TLabel;
Label10: TLabel;
Label11: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
CB1: TCheckBox;
CB2: TCheckBox;
Bevel1: TBevel;
Panel1: TPanel;
Panel2: TPanel;
Bevel2: TBevel;
Label2: TLabel;
Image1: TImage;
SettingPort: TSpeedButton;
OpenPort: TSpeedButton;
Port: TComPort;
TutupProgram: TSpeedButton;
Bevel3: TBevel;
Label5: TLabel;
procedure WMNCHitTest(var msg :
TWMNCHitTest);
WM_NCHitTest;
procedure ServerMMI_1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
message
else Port.Open;
end;
procedure TFormServer.Timer1Timer(Sender: TObject);
var a : byte;
begin
a:=data_kirim+selisih;
Port.Write(a,1);
Port.Read(data_terima,1);
selisih:=data_kirim-data_terima;
end;
procedure TFormServer.ServerMMI_1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label15.caption:='Connected
'+Socket.RemoteHost+'('+Socket.RemoteAddress+')';
PostMessage(Handle,WM_REFRESHCLIENT,0,0);
CB1.Checked:=false;
CB1.Enabled:=true;
end;
procedure TFormServer.ServerMMI_1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label10.Caption:='-';
Label11.Caption:='-';
Label5.Caption:='-';
Label15.caption:='Disconnected
'+Socket.RemoteHost+'('+Socket.RemoteAddress+')';
PostMessage(Handle,WM_REFRESHCLIENT,0,0);
CB1.Checked:=false;
CB1.Enabled:=false;
end;
procedure TFormServer.ServerMMI_1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var DataClient1:string[5];
Pol
:string[1];
Kec
:string[4];
begin
DataClient1:=Socket.ReceiveText;
pol:=copy(DataClient1,1,1);
Kec:=copy(DataClient1,2,4);
if pol='0' then
begin
Label10.Caption:='Putar Kanan';
Label11.Caption:=kec+' rpm';
data_kirim:=round(128*StrToInt(kec)/4000) + 127;
Label5.Caption:=IntToStr(data_kirim)+' desimal';
end else
if pol='1' then
begin
Label10.Caption:='Putar Kiri';
Label11.Caption:=kec+' rpm';
data_kirim:=round(127-127*StrToInt(kec)/4000);
Label5.Caption:=IntToStr(data_kirim)+' desimal';
end
end;
procedure TFormServer.CB1Click(Sender: TObject);
begin
selisih:=0;
if CB1.Checked=true then
begin
ServerMMI_1.Socket.Connections[0].SendText('YA');
CB2.Checked:=false;
Timer1.Enabled:=true;
end;
if CB1.Checked=false then
begin
ServerMMI_1.Socket.Connections[0].SendText('TIDAK');
Label10.Caption:='-';
Label11.Caption:='-';
Label5.Caption:='-';
if CB2.Checked=false then timer1.Enabled:=false;
end;
end;
procedure TFormServer.ServerMMI_2ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label16.caption:='Connected
'+Socket.RemoteHost+'('+Socket.RemoteAddress+')';
PostMessage(Handle,WM_REFRESHCLIENT,0,0);
CB2.Checked:=false;
CB2.Enabled:=true;
end;
procedure TFormServer.ServerMMI_2ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label10.Caption:='-';
Label11.Caption:='-';
Label5.Caption:='-';
Label16.caption:='Disconnected
'+Socket.RemoteHost+'('+Socket.RemoteAddress+')';
PostMessage(Handle,WM_REFRESHCLIENT,0,0);
CB2.Checked:=false;
CB2.Enabled:=false;
end;
procedure TFormServer.ServerMMI_2ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var DataClient2:string[5];
Pol
:string[1];
Kec
:string[4];
begin
DataClient2:=Socket.ReceiveText;
pol:=copy(DataClient2,1,1);
Kec:=copy(DataClient2,2,4);
if pol='0' then
begin
Label10.Caption:='Putar Kanan';
Label11.Caption:=kec+' rpm';
data_kirim:=round(128*StrToInt(kec)/4000) + 127;
Label5.Caption:=IntToStr(data_kirim)+' desimal';
end else
if pol='1' then
begin
Label10.Caption:='Putar Kiri';
Label11.Caption:=kec+' rpm';
data_kirim:=round(127-127*StrToInt(kec)/4000);
Label5.Caption:=IntToStr(data_kirim)+' desimal';
end;
end;
procedure TFormServer.CB2Click(Sender: TObject);
begin
selisih:=0;
if CB2.Checked=true then
begin
ServerMMI_2.Socket.Connections[0].SendText('YA');
CB1.Checked:=false;
Timer1.Enabled:=true;
end;
if CB2.Checked=false then
begin
ServerMMI_2.Socket.Connections[0].SendText('TIDAK');
Label10.Caption:='-';
Label11.Caption:='-';
Label5.Caption:='-';
if CB1.Checked=false then timer1.Enabled:=false;
end;
end;
procedure TFormServer.TutupProgramClick(Sender: TObject);
var stop : byte;
begin
stop:=127;
port.Write(stop,1);
Close;
end;
end.
3.2.3 Client 2
Gambar tampilan program
Linsting Program
unit UnitClientMMI_1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ScktComp, Buttons, jpeg, Mask;
type
TFormClient = class(TForm)
ClientMMI: TClientSocket;
Label2: TLabel;
Image1: TImage;
Panel1: TPanel;
Label3: TLabel;
Label7: TLabel;
Polaritas: TLabel;
Label4: TLabel;
Label8: TLabel;
Label5: TLabel;
Label6: TLabel;
SB: TScrollBar;
Label1: TLabel;
Label9: TLabel;
InIP: TEdit;
Koneksi: TCheckBox;
Label10: TLabel;
SpeedButton1: TSpeedButton;
OK: TSpeedButton;
procedure WMNCHitTest(var msg :
TWMNCHitTest); message
WM_NCHitTest;
procedure PolaritasClick(Sender: TObject);
procedure KoneksiClick(Sender: TObject);
procedure ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket);
procedure InIPChange(Sender: TObject);
procedure SBChange(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure OKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormClient: TFormClient;
data_terima, data_kirim : byte;
pol:string[1];
kec:string[4];
implementation
procedure TFormClient.WMNCHitTest(var msg : TWMNCHitTest);
begin
inherited;
if (msg.Result = htClient ) then
if (msg.YPos < Top + 20)then msg.Result:=htCaption;
end;
{$R *.dfm}
procedure TFormClient.PolaritasClick(Sender: TObject);
begin
if polaritas.Caption='Putar Kanan' then Polaritas.Caption:='Putar Kiri'
else Polaritas.Caption:='Putar Kanan';
SBChange(sender);
OKClick(Sender);
end;
procedure TFormClient.KoneksiClick(Sender: TObject);
begin
if not ClientMMI.Active then
begin
ClientMMI.Address:=InIP.Text;
end;
ClientMMI.Active:=Koneksi.Checked;
if koneksi.Checked=false then
begin
Panel1.Enabled:=false;
Label2.Visible:=false;
end;
end;
procedure TFormClient.ClientMMIRead(Sender: TObject;
Socket: TCustomWinSocket);
var status:string[5];
begin
status:=ClientMMI.Socket.ReceiveText;
if status='YA' then
begin
Label2.Visible:=true;
3.2.4 Client 2
Gambar tampilan program
Linsting Program
unit UnitClientMMI_2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ScktComp, Buttons, jpeg, Mask;
type
TFormClient = class(TForm)
ClientMMI: TClientSocket;
Label2: TLabel;
Image1: TImage;
Panel1: TPanel;
Label3: TLabel;
Label7: TLabel;
Polaritas: TLabel;
Label4: TLabel;
Label8: TLabel;
Label5: TLabel;
Label6: TLabel;
SB: TScrollBar;
Label1: TLabel;
Label9: TLabel;
InIP: TEdit;
Koneksi: TCheckBox;
Label10: TLabel;
SpeedButton1: TSpeedButton;
OK: TSpeedButton;
procedure WMNCHitTest(var msg : TWMNCHitTest); message
WM_NCHitTest;
procedure PolaritasClick(Sender: TObject);
procedure KoneksiClick(Sender: TObject);
procedure ClientMMIRead(Sender: TObject; Socket: TCustomWinSocket);
procedure InIPChange(Sender: TObject);
procedure SBChange(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure OKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormClient: TFormClient;
data_terima, data_kirim : byte;
pol:string[1];
kec:string[4];
implementation
procedure TFormClient.WMNCHitTest(var msg : TWMNCHitTest);
begin
inherited;
if (msg.Result = htClient ) then
if (msg.YPos < Top + 20)then msg.Result:=htCaption;
end;
{$R *.dfm}
procedure TFormClient.PolaritasClick(Sender: TObject);
begin
if polaritas.Caption='Putar Kanan' then Polaritas.Caption:='Putar Kiri'
else Polaritas.Caption:='Putar Kanan';
SBChange(sender);
OKClick(Sender);
end;
procedure TFormClient.KoneksiClick(Sender: TObject);
begin
if not ClientMMI.Active then
begin
ClientMMI.Address:=InIP.Text;
end;
ClientMMI.Active:=Koneksi.Checked;
if koneksi.Checked=false then
begin
Panel1.Enabled:=false;
Label2.Visible:=false;
end;
end;
procedure TFormClient.ClientMMIRead(Sender: TObject;
Socket: TCustomWinSocket);
var status:string[5];
begin
status:=ClientMMI.Socket.ReceiveText;
if status='YA' then
begin
Label2.Visible:=true;
Label2.Caption:='Status : Client diperbolehkan mengirim data';
Panel1.Enabled:=true;
SBChange(sender);
end;
if status='TIDAK' then
begin
Label2.Caption:='Status : Client tidak diperbolehkan mengirim data';
Panel1.Enabled:=false;
end;
end;
procedure TFormClient.InIPChange(Sender: TObject);
begin
if InIP.Text='' then Koneksi.Enabled:=false else Koneksi.Enabled:=true;
end;
procedure TFormClient.SBChange(Sender: TObject);
begin
Label1.Caption:=IntToStr(SB.Position);
kec:=Label1.Caption;
if Polaritas.Caption='Putar Kanan' then pol:='0' else
BAB IV
KESIMPULAN DAN SARAN
A.
Kesimpulan
B.
Saran
DAFTAR PUSTAKA
Paulus A. Nalwan, 2003, Teknik Antar Muka dan Pemrograman, Elex Media
Computindo, Jakarta
Retna prasetyo, 2004, Interfacing Port Paralel & Port Serial Komputer dengan
VB, Yogyakarta
Rahmat Setyawan, 2006, Mikrokontroller MCS-51, Graha Ilmu, Yogyakarta
Tim Lab Mikroprosessor, 2006, Pemrograman Mikrokontroller AT 89S51 deng
an /C++ dan Assembler, Andi, Yogyakarta
Users Manual One Chip 8 Bit Microprocessor Control Trainer, SkLab
Hasmini dkk, 2007, Penuntun Praktikum Sistem Kendali Digital, Unhas,
Makassar
Userss Manual Servo Motor System ED-4400