• Tidak ada hasil yang ditemukan

BAB V KESIMPULAN DAN SARAN

5.2. Saran

Konsol Virtual masih dapat dikembangkan dengan menambahkan fungsi-fungsi pemrograman PLC yang lain. Sebagai contoh yaitu penambahan fungsi-fungsi penyusunan program dengan gambar dalam bentuk ladder diagram tanpa harus memahami bahasa mnemonic terlebih dahulu.

Penambahan fungsi komunikasi juga masih dapat dikembangkan seperti penambahan fitur pemilihan port komunikasi atau penggantian jalur komunikasi dengan port USB (Universal Serial Bus) sesuai dengan perkembangan teknologi komunikasi yang ada sekarang ini.

99

DAFTAR PUSTAKA

[1] Agfianto Eko Putra, PLC (Konsep, Pemrograman dan Aplikasi), Yogyakarta: Gava Media, 2004.

[2] M. Budiyanto dan A.Wijaya, Pengenalan Dasar-Dasar PLC (Programmable Logic Controller). Yogyakarta: Gava Media.

[3] ______, Programmable Logic Controller, Festo Didactic

[4] Suhata ST, VB sebagai Pusat Pengendali Peralatan Elektronik, Jakarta: PT Elex Media Komputindo, 2005.

[5] Agnes Heni Triyuliana (editor), Panduan Pemrograman dan Referensi Kamus Visual Basic 6.0, Yogyakarta: Penerbit ANDI, 2006

http://beyondlogic.org

L1 Kode Instruksi Instruksi Kode Instruksi (Bin) (Hex) PROG 0001 0111 17 RUN 0001 1000 18 END 1111 1111 FF AND 0000 0001 01 AND TIM 0000 0010 02

AND TIM NOT 0000 0011 03

AND NOT 0000 0100 04 AND CNT 0000 0101 05 AND CNT NOT 0000 0110 06 OR 0000 0111 07 OR TIM 0000 1000 08 OR TIM NOT 0000 1001 09 OR NOT 0000 1010 0A OR CNT 0000 1011 0B OR CNT NOT 0000 1100 0C LD 0000 1101 0D LD TIM 0000 1110 0E LD TIM NOT 0000 1111 0F LD NOT 0001 0000 10 LD CNT 0001 0001 11 LD CNT NOT 0001 0010 12 CNT 0001 0011 13 OUT 0001 0101 15 OUT NOT 0001 0110 16 TIM 0001 0100 14

Kode Operand Operand Kode Operand (Bin) (Hex) 001 0000 0001 01 002 0000 0010 02 003 0000 0011 03 004 0000 0100 04 005 0000 0101 05 006 0000 0110 06 007 0000 0111 07 008 0000 1000 08 009 0000 1001 09 010 0000 1010 0A 011 0000 1011 0B 012 0000 1100 0C 013 0000 1101 0D 014 0000 1110 0E 015 0000 1111 0F 016 0001 0000 10 017 0001 0001 11 018 0001 0010 12 019 0001 0011 13 020 0001 0100 14 021 0001 0101 15 022 0001 0110 16 023 0001 0111 17 024 0001 1000 18 025 0001 1001 19 027 0001 1011 1B 028 0001 1100 1C 029 0001 1101 1D 030 0001 1110 1E 031 0001 1111 1F 032 0010 0000 20 033 0010 0001 21 034 0010 0010 22 035 0010 0011 23 243 1111 0011 F3 244 1111 0100 F4 245 1111 0101 F5 246 1111 0110 F6 247 1111 0111 F7 248 1111 1000 F8 249 1111 1001 F9 250 1111 1010 FA

L3

Kombinasi Instruksi dan operand

No. Kombinasi Instruksi Data Keterangan

1 LD XXX Rentang data yaitu 001 – 008

2 LD NOT XXX Rentang data yaitu 001 – 008 3 LD TIM 001 Data harus ditulis 001

4 LD TIM NOT 001 Data harus ditulis 001 5 LD CNT 001 Data harus ditulis 001 6 LD CNT NOT 001 Data harus ditulis 001

7 AND XXX Rentang data yaitu 001 – 008

8 AND NOT XXX Rentang data yaitu 001 – 008 9 AND TIM 001 Data harus ditulis 001

10 AND TIM NOT 001 Data harus ditulis 001 11 AND CNT 001 Data harus ditulis 001 12 AND CNT NOT 001 Data harus ditulis 001

13 OR XXX Rentang data yaitu 001 – 008 14 OR NOT XXX Rentang data yaitu 001 – 008 15 OR TIM 001 Data harus ditulis 001

16 OR TIM NOT 001 Data harus ditulis 001 17 OR CNT 001 Data harus ditulis 001 18 OR CNT NOT 001 Data harus ditulis 001

19 TIM XXX Rentang data yaitu 001 – 250

20 CNT XXX Rentang data counter yaitu 001 – 010 21 OUT XXX Rentang data yaitu 101– 108

22 OUT NOT XXX Rentang data yaitu 101– 108

Listing Program Konsol Virtual pada Visual Basic

KODE FORM MAIN MENU

‘================================= Dim a As Integer

Private Sub CmdAbout_Click() FrmAbout.Top = Me.Top + 400 FrmAbout.Left = Me.Left + 400 FrmAbout.Show

End Sub

Private Sub CmdLoad_Click() 'load program yg sudah ada ComLoad.CancelError = True On Error GoTo ErrHndl

ComLoad.Filter = "Microsoft Office Access Databases(*.mdb)|*.mdb|All files (*.*)|*.*" ComLoad.InitDir = App.Path & "\Save\"

ComLoad.ShowOpen dbPath = ComLoad.FileName Call Opendb

'========================================= 'buka form penampil

Unload Me If lngStatusMetod = 1 Then Call FrmKeypad.tombol_off FrmSiap.Show Else FrmKeyboard.Show End If ErrHndl: Exit Sub End Sub

Private Sub CmdSusun_Click() 'cek pilihan mode, buka form mode x If OptKeyboard.Value = True Then FrmKeyboard.Show Unload Me Else FrmKeypad.Show Unload Me End If End Sub

Private Sub CmdXit_Click() booStatusExit = True Call Kabur

End Sub

Private Sub Form_Load() 'pengaturan tampilan Explode Me, 1 PicCom.Picture = ImgCom.Picture 'connect to dbase Call Initdb 'default method OptKeypad.Value = True CmdSusun.SetFocus End Sub

Private Sub Form_Unload(Cancel As Integer) 'pengaturan status metode

If OptKeypad.Value = True Then lngStatusMetod = 1

Else

L5

End If End Sub

Private Sub Explode(ByRef frm As Form, ByRef Efek As Boolean) With FrmWelcome .Width = 6200 .Height = 0 .Show If Efek Then For x = 0 To 6200 Step 50

.Move (Screen.Width - .Width) / 2, (Screen.Height - .Height) / 2, x, 0 DoEvents

Next

For x = 0 To 6200 Step 50

.Move (Screen.Width - .Width) / 2, (Screen.Height - .Height) / 2, 6200, x DoEvents

Next End If End With End Sub

Private Sub Timer1_Timer() If a < 3 Then ImgPnh1(a).Visible = True ImgPnh2(a).Visible = True If a = 2 Then PicCom.Picture = ImgComm.Picture End If a = a + 1 Else For i% = 0 To 2 ImgPnh1(i).Visible = False ImgPnh2(i).Visible = False Next PicCom.Picture = ImgCom.Picture a = 0 End If End Sub

‘KODE FORM KEYPAD

‘=========================================== 'RUN

Private Sub CmdRun_Click() strRun = Chr$(&H18) MSComm.Output = strRun TxtPrev.Text = "Running device..." TxtData.Text = ""

cacah% = 0 Do

strBack = MSComm.Input cacah = cacah + 1

Loop Until ((Right(strBack, 1) = "!") Or (cacah = 1800)) If (strBack = "!") Then

TxtInst.Text = "Success!"

FrmSiap.LblDev.Caption = "On Line" FrmSiap.LblDev.ForeColor = &HFF00& Else

TxtInst.Text = "Failed!"

FrmSiap.LblDev.Caption = "Off Line" FrmSiap.LblDev.ForeColor = &HFF& End If

End Sub 'SEND

Private Sub CmdSnd_Click() Call FindEnd

If lngFindEnd = 0 Then intWarn = 1

Call pesan_warn Exit Sub Else

'atur tombol yg di-disable Call tombol_off FrmSiap.Show End If End Sub 'FUNGSI-FUNGSI INSTRUKSI 'LOAD

Private Sub CmdLd_Click() TxtInst.Text = "LD" TxtData.Text = "" End Sub

'AND

Private Sub CmdAnd_Click() TxtInst.Text = "AND" TxtData.Text = "" End Sub

'OR

Private Sub CmdOr_Click() TxtInst.Text = "OR" TxtData.Text = "" End Sub

'OUT

Private Sub CmdOut_Click() TxtInst.Text = "OUT" TxtData.Text = "" End Sub

'END

Private Sub CmdEnd_Click() TxtInst.Text = "END" TxtData.Text = "" End Sub

'CNT

Private Sub CmdCnt_Click() If (Len(TxtInst) > 7) Then intWarn = 2

Call pesan_warn Else

Select Case TxtInst.Text Case ""

TxtInst.Text = "CNT"

Case "TIM", "CNT", "OUT", "END" intWarn = 2

Call pesan_warn

Case "LDNOT", "LDCNT", "LDTIM", "ANDNOT", "ANDCNT", "ANDTIM", "ORNOT", "ORCNT", "ORTIM", "OUTNOT", (Len(TxtInst) > 7)

intWarn = 2 Call pesan_warn Case Else

TxtInst.Text = TxtInst.Text & "CNT" End Select

End If End Sub

'RESET

Private Sub CmdRst_Click()

konfirm$ = MsgBox("Do you want to RESET Konsol Virtual and create a new program?", vbYesNo + vbQuestion, "Confirm Reset")

L7 'inisialisasi ulang Call Initdb Call Openrs Call showtxt lngFindEnd = 0 Else Exit Sub End If End Sub 'TIM

Private Sub CmdTim_Click() If (Len(TxtInst) > 7) Then intWarn = 3

Call pesan_warn Else

Select Case TxtInst.Text Case ""

TxtInst.Text = "TIM"

Case "TIM", "CNT", "OUT", "END" intWarn = 3

Call pesan_warn

Case "LDNOT", "LDCNT", "LDTIM", "ANDNOT", "ANDCNT", "ANDTIM", "ORNOT", "ORCNT", "ORTIM", "OUTNOT"

intWarn = 3 Call pesan_warn Case Else

TxtInst.Text = TxtInst.Text & "TIM" End Select

End If End Sub

'NOT

Private Sub CmdNot_Click() Select Case TxtInst.Text Case ""

intWarn = 5 Call pesan_warn

Case "END", "CNT", "TIM" intWarn = 4

Call pesan_warn

Case "LDNOT", "LDTIMNOT", "LDCNTNOT", "ANDNOT", "ANDTIMNOT", "ANDCNTNOT", "ORNOT", "ORTIMNOT", "ORCNTNOT", "OUTNOT"

intWarn = 4 Call pesan_warn Case Else

TxtInst.Text = TxtInst.Text & "NOT" End Select

End Sub

'CLEAR

'hapus layar dan format objek lain Sub CmdClr_Click() TxtInst.Text = "" TxtData.Text = "" CmdUp.Enabled = True CmdDown.Enabled = True 'pengaturan text.previous On Error Resume Next rs.MoveLast

rs2.MoveLast

teks1$ = rs.Fields("Inst").Value teks2$ = rs.Fields("Data").Value TxtPrev.Text = teks1 & " " & teks2 End Sub

Private Sub CmdEnt_Click()

'======================================================= 'CEK BARIS TERAKHIR APAKAH END

Call FindEnd If lngFindEnd = 1 Then intWarn = 6 Call pesan_warn TxtInst.Text = "" TxtData.Text = "" Exit Sub End If '======================================================== 'CEK SYARAT strInst = TxtInst.Text strData = TxtData.Text 'INSTRUKSI

If TxtInst.Text = "" Then 'apakah instruksi kosong intWarn = 7

Call pesan_warn

ElseIf TxtInst.Text <> "END" Then 'apakah instruksi bukan end If Len(TxtData.Text) < 3 Then 'inst selain end apakah tidak ada data intWarn = 8

Call pesan_warn Exit Sub End If

'cek syarat inst yang butuh data tertentu Call cekSyarat

If booNoErr = True Then GoTo PindahData Else

intWarn = 9 Call pesan_warn End If

Else 'opsi terakhir pasti end GoTo PindahData

End If Exit Sub

'========================================================== 'DATABASE

'pindah program ke dbase PindahData:

With rs .AddNew

.Fields("Inst").Value = strInst .Fields("Data").Value = strData

.Update 'BUKAN UPDATE TAPI TAMBAH DATA KEMBAR End With 'bagian pengkodean TempIns = strInst TempDat = strData Call Pengkodean With rs2 .AddNew .Fields("KodeInst").Value = TmpCodIns .Fields("KodeData").Value = TmpCodDat .Update End With

TxtPrev.Text = TxtInst.Text & " " & TxtData.Text 'bersihkan layar

TxtInst.Text = "" TxtData.Text = "" End Sub

'DELETE

Private Sub CmdDel_Click() Call showtxt

'On Error GoTo ErrCmdDel If rs.RecordCount > 0 Then

L9

If (rs.Fields("Inst").Value = "END") Then lngFindEnd = 1

Call hapus

lngFindEnd = 0 'status end tidak ada (dihapus) Else

Call hapus End If Else

MsgBox "There is nothing to delete!", vbOKOnly, "Empty Data" End If

'ErrCmdDel: ' Exit Sub End Sub

Private Sub CmdDown_Click() On Error GoTo errhdlr 'If rs.EOF = False Then rs.MoveNext rs2.MoveNext ' CmdUp.Enabled = True 'Else ' CmdDown.Enabled = False 'End If errhdlr: Call showtxt End Sub

Private Sub CmdUp_Click() On Error GoTo errhdlr 'If rs.BOF = False Then rs.MovePrevious rs2.MovePrevious ' CmdDown.Enabled = True 'Else ' CmdUp.Enabled = False 'End If errhdlr: Call showtxt End Sub

Private Sub CmdMain_Click()

Main$ = MsgBox("Return to main menu and leave current program?", vbOKCancel + vbQuestion, "Return to Main Menu")

If Main = vbOK Then close_com Unload FrmSiap Unload Me Call Utama FrmWelcome.Show Else Exit Sub End If End Sub 'DATA 'tombol-tombol angka

Private Sub CmdAngka_Click(Index As Integer) 'disable jika tdk ada instruksi atau ada inst end If (TxtInst.Text) = "" Or (TxtInst.Text = "END") Then TxtData.Text = ""

Else

Select Case Index

Case 0: TxtData.Text = TxtData.Text & "0" Case 1: TxtData.Text = TxtData.Text & "1" Case 2: TxtData.Text = TxtData.Text & "2" Case 3: TxtData.Text = TxtData.Text & "3" Case 4: TxtData.Text = TxtData.Text & "4"

Case 5: TxtData.Text = TxtData.Text & "5" Case 6: TxtData.Text = TxtData.Text & "6" Case 7: TxtData.Text = TxtData.Text & "7" Case 8: TxtData.Text = TxtData.Text & "8" Case 9: TxtData.Text = TxtData.Text & "9" End Select

End If End Sub

'EXIT

Private Sub CmdX_Click() booStatusExit = False close_com Call Kabur open_com End Sub 'SAVE

Private Sub CmdSav_Click() 'Prog sudah diakhiri END?? Call FindEnd

If lngFindEnd = 0 Then

strPesanSave$ = MsgBox("Instruction END is not found. Do you want to save this program anyway?", vbOKCancel + vbExclamation, "Save unfinished program?")

If strPesanSave = vbOK Then GoTo simpan Else GoTo ErrSave End If Else simpan: ComSave.CancelError = True On Error GoTo ErrSave

ComSave.Filter = "Microsoft Office Access Databases(*.mdb)|*.mdb|All files (*.*)|*.*" ComSave.InitDir = App.Path & "\Save\"

ComSave.ShowSave dbPath = ComSave.FileName If dbPath <> "" Then Call Savedb End If End If ErrSave: Exit Sub End Sub

Private Sub Form_Load() 'koneksi

Call Opendb Call Openrs

On Error Resume Next rs.MoveFirst rs2.MoveFirst Call showtxt 'komunikasi open_com 'lainlain Me.Height = 6500 PicWarn.Picture = ImgWarnBlk.Picture lngStatusMetod = 1 End Sub 'switch tampilan

Private Sub ImgSwitch_Click() lngStatusMetod = 2 Call close_com

Call FrmKeyboard.open_com FrmKeyboard.Show

L11

End Sub

'DISPLAY (Pengaturan tampilan layar) Sub showtxt()

On Error GoTo sesuaikan 'tampilan utama

TxtInst.Text = rs.Fields("Inst").Value TxtData.Text = rs.Fields("Data").Value 'mundur 1 utk teks previous

rs.MovePrevious rs2.MovePrevious

TxtPrev.Text = rs.Fields("Inst").Value & " " & rs.Fields("Data").Value 'kembalikan posisi rs

rs.MoveNext rs2.MoveNext Exit Sub sesuaikan:

'jika awal baris kerjakan ini

If ((rs.BOF = True) And (rs.RecordCount > 0)) Then rs.MoveFirst

rs2.MoveFirst

'CmdUp.Enabled = False

TxtInst.Text = rs.Fields("Inst").Value TxtData.Text = rs.Fields("Data").Value TxtPrev.Text = "First Line"

'jika akhir baris kerjakan ini

ElseIf ((rs.EOF = True) And (rs.RecordCount > 0)) Then rs.MoveLast

rs2.MoveLast

'CmdDown.Enabled = False

TxtInst.Text = rs.Fields("Inst").Value TxtData.Text = rs.Fields("Data").Value TxtPrev.Text = "End of Line"

ElseIf (rs.RecordCount = 1) Then rs.MoveFirst

rs2.MoveFirst

TxtInst.Text = rs.Fields("Inst").Value TxtData.Text = rs.Fields("Data").Value TxtPrev.Text = "First Line"

'jika ambigu bof n eof true

ElseIf ((rs.BOF = True) And (rs.EOF = True)) Then TxtInst.Text = "" TxtData.Text = "" TxtPrev.Text = "" End If End Sub Sub pesan_warn() 'efek keluar Do Me.Height = Me.Height + 1 Loop Until Me.Height = 8650 'ubah picwarn

PicWarn.Picture = ImgWarnClr.Picture

PicWarn.ToolTipText = "Click here to close warning message" 'tombol-tombol disable sebelum warning msg ditutup

Call tombol_off CmdSnd.Enabled = False CmdRun.Enabled = False Call warn_msg 'tampilkan pesan LblWarn.Caption = pesan End Sub

Private Sub PicWarn_Click() 'efek masuk

Me.Height = Me.Height - 1 Loop 'Until Me.Height = 6500

PicWarn.Picture = ImgWarnBlk.Picture PicWarn.ToolTipText = "WARNING icon" Call CmdClr_Click

'tombol-tombol enable setelah warning msg ditutup Call tombol_on CmdSnd.Enabled = True CmdRun.Enabled = True End Sub Sub tombol_off() CmdLd.Enabled = False CmdAnd.Enabled = False CmdOr.Enabled = False CmdNot.Enabled = False CmdTim.Enabled = False CmdCnt.Enabled = False CmdOut.Enabled = False CmdEnd.Enabled = False CmdSav.Enabled = False CmdClr.Enabled = False CmdEnt.Enabled = False CmdRst.Enabled = False CmdDel.Enabled = False End Sub Sub tombol_on() CmdLd.Enabled = True CmdAnd.Enabled = True CmdOr.Enabled = True CmdNot.Enabled = True CmdTim.Enabled = True CmdCnt.Enabled = True CmdOut.Enabled = True CmdEnd.Enabled = True CmdSav.Enabled = True CmdClr.Enabled = True CmdEnt.Enabled = True CmdRst.Enabled = True CmdDel.Enabled = True CmdEnt.Enabled = True End Sub Sub hapus() 'konfirmasi delete

Setuju$ = MsgBox("Are you sure want to delete this line?", vbYesNo, "Confirm Delete") If Setuju = vbYes Then

rs.Delete 'hapus dbase instruksi

If (lngFindEnd <> 1) Then 'uji inst END -tidak ada data, bisa error rs2.Delete 'hapus dbase data

End If TxtInst.Text = "" TxtData.Text = "" End If End Sub Sub close_com()

If MSComm.PortOpen = True Then MSComm.PortOpen = False End If

End Sub Sub open_com()

If MSComm.PortOpen = False Then 'port comm

MSComm.CommPort = 1

L13

MSComm.InputLen = 0 MSComm.PortOpen = True End If

End Sub

‘KODE FORM KEYBOARD

‘========================================== Dim strProg, strRun, strBack, strEnd, strKirim As String

Private Sub DGProgram_Click() On Error Resume Next

With DGProgram TxtIns.Text = .Columns(0).Text TxtDat.Text = .Columns(1).Text End With End Sub 'DELETE

Private Sub CmdDel_Click() If rs.RecordCount > 0 Then

If (rs.Fields("Inst").Value = "END") Then lngFindEnd = 1

Call hapus

lngFindEnd = 0 'status end tidak ada (dihapus) Else

Call hapus End If Else

MsgBox "There is nothing to delete!", vbOKOnly, "Empty Data" End If

End Sub

'ADD

Private Sub CmdAdd_Click() 'INISIALISASI

TxtIns.Text = UCase(TxtIns) strInst = TxtIns.Text strData = TxtDat.Text

'======================================================= 'CEK BARIS TERAKHIR APAKAH END

Call FindEnd

If lngFindEnd = 1 Then intWarn = 6 Call warn_msg

MsgBox pesan, vbOKOnly + vbInformation, "Warning message!" TxtIns.Text = "" TxtDat.Text = "" Exit Sub End If '======================================================== 'CEK SYARAT 'instruksi kosong? If TxtIns.Text = "" Then intWarn = 7 Call warn_msg

MsgBox pesan, vbOKOnly + vbInformation, "Warning message!" 'instruksi selain end

ElseIf (TxtIns.Text <> "END") Then 'inst selain end dan tidak ada data/ data salah If Len(TxtDat.Text) < 3 Then

intWarn = 8 Call warn_msg

MsgBox pesan, vbOKOnly + vbInformation, "Warning message!" Exit Sub

End If

'inst yang butuh data tertentu Call cekSyarat

If booNoErr = True Then GoTo PindahData Else

MsgBox strPesan, vbOKOnly + vbInformation, "Warning message!" Exit Sub

End If

'untuk ins end dan ada data -->salah

ElseIf (TxtIns.Text = "END") And (TxtDat.Text <> "") Then TxtDat.Text = ""

strData = "" GoTo PindahData 'opsi terakhir pasti end Else

'======================================================= 'PINDAH DATA KE DG_PROGRAM

PindahData: With rs .AddNew .Fields("Inst").Value = strInst .Fields("Data").Value = strData .Update End With

SBar.SimpleText = rs.RecordCount & " line(s) of program "

'======================================================= 'PENGKODEAN KE BINER TempIns = strInst TempDat = strData Call Pengkodean With rs2 .AddNew .Fields("KodeInst").Value = TmpCodIns .Fields("KodeData").Value = TmpCodDat .Update End With 'hapus textbox TxtIns.Text = "" TxtDat.Text = "" End If TxtIns.SetFocus End Sub

Private Sub Form_Load() 'koneksi Call Openrs Call showdgrid 'komunikasi Call open_com 'lainlain Me.Width = 5100 lngStatusMetod = 2 End Sub

Private Sub showdgrid() With DGProgram Set .DataSource = rs .Refresh 'rapikan tampilan .Columns(0).Caption = "Instruksi" .Columns(0).Width = 1500 .Columns(1).Caption = "Data" .Columns(1).Width = 1500

SBar.SimpleText = rs.RecordCount & " line(s) of program " .Splits.Item(0).Locked = True

End With End Sub

L15

'ABOUT

Private Sub About_Click() FrmAbout.Top = Me.Top + 500 FrmAbout.Left = Me.Left FrmAbout.Show End Sub

'EXIT

Private Sub Exit_Click() booStatusExit = False Call close_com Call Kabur Call open_com End Sub

Private Sub HelpFile_Click() CallHelp

End Sub

Private Sub Main_Click()

MainMenu$ = MsgBox("Return to main menu and leave current program?", vbOKCancel + vbQuestion, "Return to Main Menu")

If MainMenu = vbOK Then Call close_com Unload Me Call Utama FrmWelcome.Show End If End Sub

Private Sub New_Click() jml1@ = Len(App.Path) + 6 jml2@ = Len(dbPath) jml@ = jml2 - jml1 nama$ = Right(dbPath, jml)

'cek penyusunan program yg sedang aktif If rs.RecordCount > 0 Then

baru$ = MsgBox("Do you want to save any changes to " & nama, vbYesNoCancel + vbQuestion, "Create new program...")

If baru = vbYes Then Call Savedb

ElseIf baru = vbCancel Then Exit Sub End If 'inisialisasi ulang Call Initdb Call Openrs Call showdgrid lngFindEnd = 0 'hapus textbox TxtIns.Text = "" TxtDat.Text = "" End If 'sesuaikan status ShpRun.FillColor = &HC0C0C0 ShpProg.FillColor = &HC0C0C0 End Sub

Private Sub Open_Click() ComOpen.CancelError = True On Error GoTo ErrOpen

ComOpen.Filter = "Microsoft Office Access Databases(*.mdb)|*.mdb|All files (*.*)|*.*" ComOpen.InitDir = App.Path & "\Save\"

ComOpen.ShowOpen

dbPath = ComOpen.FileName Call Opendb

Call Openrs Call showdgrid ErrOpen: Exit Sub End Sub

Private Sub Run_Click() strRun = Chr$(&H18) MSComm.Output = strRun cacah% = 1 Do strBack = MSComm.Input cacah = cacah + 1

Loop Until ((Right(strBack, 1) = "!") Or (cacah = 1800)) If (strBack = "!") Then

LblStatus.Caption = "On Line" ShpRun.FillColor = &HFF00& Else

LblStatus.Caption = "Off Line" ShpRun.FillColor = &HFF& End If

End Sub

Private Sub Save_Click() 'cek program kosong If rs.RecordCount = 0 Then

simp$ = MsgBox("There are nothing to save!", vbOKOnly + vbExclamation, "Empty Program!") Else

Call simpan End If End Sub

Private Sub Switch_Click() lngStatusMetod = 1 Call close_com Call FrmKeypad.open_com FrmKeypad.Show Unload Me End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) Select Case Button.Key

Case "cmdSwitch" Call Switch_Click Case "cmdOpen" Call Open_Click Case "cmdSave" Call Save_Click Case "cmdWrite" Call Write_Click Case "cmdRun" Call Run_Click Case "cmdHelp" Call HelpFile_Click End Select End Sub

Private Sub Write_Click() 'CEK INST END

'====================================== Call FindEnd

If lngFindEnd = 0 Then intWarn = 1 Call warn_msg

MsgBox pesan, vbOKOnly + vbInformation, "Warning message!" Exit Sub

L17

End If

'====================================== 'bersihkan text box

Text1.Text = "" teksCode = "" teksHex = "" teksChar = "" 'ATUR DBASE '====================================== rs2.MoveFirst 'ke awal baris dbase

'ENCODE

'====================================== 'tampilan kode

Do

On Error GoTo kosong

strCode = rs2.Fields("KodeInst").Value Call konversi If (strCode = "11111111") Then GoTo selesai Else strCode = rs2.Fields("KodeData").Value Call konversi End If selesai: rs2.MoveNext

Loop Until (strCode = "11111111") 'tampilkan

Text1.Text = "#1_ " & teksCode & "#2_ " & teksHex & "#3_ " & teksChar kosong:

'====================================== 'cek data kosong

If teksChar = "" Then

strKosong$ = MsgBox("Failed in encoding program!", vbOKOnly + vbExclamation, "ERROR") Exit Sub

End If z% = 1 cacah% = 1

strEnd = Chr$(&HFF) 'kirim status write program strProg = Chr$(&H17) MSComm.Output = strProg delay% = 1 Do strBack = MSComm.Input cacah = cacah + 1

Loop Until ((Right(strBack, 1) = "!") Or (cacah = 1800)) 'uji feedback uC

If (Right(strBack, 1) = "!") Then 'status device

LblStatus.Caption = "On Line" ShpProg.FillColor = &HFF00& 'pengiriman mulai Do strKirim = Mid(teksKirim, z, 1) MSComm.Output = strKirim z = z + 1

Loop Until (strKirim = strEnd) 'kirim sampai karakter end Else

LblStatus.Caption = "Off Line" ShpProg.FillColor = &HFF& End If

End Sub Sub simpan()

ComSave.CancelError = True On Error GoTo ErrSave

ComSave.Filter = "Microsoft Office Access Databases(*.mdb)|*.mdb|All files (*.*)|*.*" ComSave.InitDir = App.Path & "\Save\"

ComSave.ShowSave

dbPath = ComSave.FileName

' If ComSave.FileName = "temp.mdb" Then ' MsgBox ("temp.mdb is illegal name!") 'Else If dbPath <> "" Then Call Savedb End If ErrSave: Exit Sub End Sub Sub hapus() 'konfirmasi delete

Setuju$ = MsgBox("Are you sure want to delete this line?", vbYesNo, "Confirm Delete") If Setuju = vbYes Then

rs.Delete 'hapus dbase instruksi

If (lngFindEnd <> 1) Then 'uji inst END -tidak ada data, bisa error rs2.Delete 'hapus dbase data

End If

SBar.SimpleText = rs.RecordCount & " line(s) of program " TxtIns.Text = ""

TxtDat.Text = "" End If

End Sub

Sub close_com()

If MSComm.PortOpen = True Then MSComm.PortOpen = False End If

End Sub

Sub open_com()

If MSComm.PortOpen = False Then 'port comm

MSComm.CommPort = 1

MSComm.Settings = "9600,N,8,1" '9600=baud rate N=no parrity 8bits 1 stop bit MSComm.InputLen = 0

MSComm.PortOpen = True End If

End Sub

‘FORM PENAMPIL PROGRAM

‘======================================== Dim strProg, strRun, strBack, strEnd, strKirim As String

Private Sub CmdEdit_Click()

'tombol-tombol enable kalau mau di-edit Call FrmKeypad.tombol_on

Call FrmKeypad.CmdClr_Click Unload Me

End Sub

Private Sub CmdSend_Click()

'====================================== 'baca kode di database

'convert ke hexa atau ascii 'simpan dalam satu variabel string 'cek data kosong

If teksChar = "" Then

strKosong$ = MsgBox("Failed in encoding program!", vbOKOnly + vbInformation, "ERROR") Exit Sub

End If z% = 1 cacah% = 1

L19

'kirim status write program strProg = Chr$(&H17)

FrmKeypad.MSComm.Output = strProg

FrmKeypad.TxtPrev = "Programming micro-PLC..." FrmKeypad.TxtData = ""

Do

strBack = FrmKeypad.MSComm.Input cacah = cacah + 1

Loop Until ((Right(strBack, 1) = "!") Or (cacah = 1800))

'uji feedback uC

If (Right(strBack, 1) = "!") Then 'status device

LblDev.Caption = "On Line" LblDev.ForeColor = &HFF00& 'pengiriman mulai

Dokumen terkait