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