5. Tampilan HMI

 Pada bagian ini, akan dijelaskan cara pembuatan HMI berikut ini:

  1. Mesin Kopi
  2. Vending Machine
  3. Mesin Pijat
  4. Mesin Cuci

Berikut ini uraian masing-masing:


======================================================================

1. Mesin Kopi

Bagaimana membuat HMI Mesin Kopi di LabVIEW dan menghubungkannya dengan Arduino?

Langkah-langkahnya:

  1. Buat menu pilihan kopi
  2. Buat tahapan proses untuk semua pilihan
  3. Tentukan waktu yang diperlukan per proses per pilihan
  4. Buat tampilan HMI dengan animasi penuangan kopi
  5. Hubungkan HMI dengan Arduino


Langkah 1. Membuat menu pilihan kopi.

Ada 9 pilihan menu kopi, yaitu Ristretto, Espresso, Lungo, Americano, Cappuccino, Latte, Mocha, Vienna dan Cacao, yang ditunjukkan dengan campuran bahan yang digunakan.

Gambar 1. Pilihan menu kopi


Langkah 2. Buat tahapan proses untuk semua pilihan

Dari gambar menu kopi di atas, terlihat ada 5 bahan yang digunakan, yaitu air, coklat, kopi, susu dan krim. Proses pengolahan kelima bahan tersebut dapat diurutkan sebagai berikut:
  • Pemanasan Air
  • Ekstraksi coklat
  • Ekstraksi kopi
  • Perebusan Susu
  • Pengocokan Susu untuk Krim
Tentunya pengolahan bahan di atas tergantung pada pilihan kopi. Sebagai contoh untuk pilihan kopi Ristretto, maka proses yang diperlukan hanyalah pemanasan air dan ekstraksi coklat. Sedangkan untuk pilihan kopi Mocha, maka proses yang diperlukan adalah pemanasan air, ekstraksi coklat, ekstraksi kopi, perebusan susu dan pengocokan susu. Lebih detilnya, perhatikan Tabel 1 berikut ini:

Tabel 1. Daftar proses pada masing-masing pilihan kopi


Langkah 3. Tentukan waktu yang diperlukan per proses per pilihan

Proses di atas masih belum lengkap, karena diperlukan penuangan masing-masing bahan setelah diolah. Anggap bahwa setiap proses memiliki satuan waktu 5 detik, baik untuk pengolahannya maupun penuangannya. Sebagai contoh untuk Ristretto, untuk bisa menyajikan kopi Ristretto memerlukan waktu 15 detik, dengan rincian sebagai berikut:

  • 5 detik pertama untuk pemanasan air
  • 5 detik kedua untuk ekstraksi kopi
  • 5 detik ketiga untuk penuangan kopi
Sedangkan untuk kopi Espresso memerlukan waktu 30 detik, terlihat dari ukuran bahannya yang 2 kali lipat dari Ristretto. Begitu pula untuk kopi Lungo, memerlukan waktu 45 detik, karena ukuran bahannya 3 kali lipat bahan Ristretto. Lebih rinci mengenai waktu yang diperlukan setiap pilihan kopi, dapat dilihat pada Tabel 2 berikut ini:

Tabel 2. Waktu yang diperlukan per proses pada masing-masing pilihan kopi (dalam detik)


Langkah 4. Buat tampilan HMI dengan animasi penuangan kopi

Berikut ini langkah-langkahnya:

1. Download file LabVIEW berikut ini: 
https://drive.google.com/file/d/1ct2OQVcBw9LsTp_IChWZz-kcRwuZo84l/view?usp=sharing
2. Tambahkan sebuah Home Button, yang diambil dari kategori Silver, Boolean, Buttons, Home Button, seperti terlihat pada Gambar 2 berikut ini:  

Gambar 2. Ambil Home Button 

3. Klik kanan Home Button, pilih Properties, isi Height=170 dan Width=130.  
4. Klik kanan Home Button, pilih Advanced, pilih Customize. 
5. Di jendela Customize Control, klik tombol Change to Customize Mode, kemudian tarik kotak yang membuat bagian tengah Button seolah-olah menonjol. Hapus kotak tersebut sehingga permukaan Button menjadi terlihat datar.
6. Berikutnya, klik kanan pada gambar icon Home, pilih Import Picture from Clipboard. Namun sebelum Import Picture from Clipboard, pilih dulu salah satu gambar jenis kopi, dan tekan tombol Ctrl dan C untuk meng-copy, kemudian pilih Import Picture from Clipboard, maka gambar icon Home akan berubah menjadi gambar jenis kopi yang dipilih sebelumnya.

Gambar 3. Klik kanan Home Button, pilih Advanced, pilih Customize, Import Picture from Clipboard (namun sebelum Import Picture from Clipboard, pilih dulu gambarnya, kemudian Copy, setelah itu baru bisa Import Picture from Clipboard)
 
7. Tutup jendela Customize Control dengan menekan tombol silang di pojok kanan atas, kemudian pilih Yes untuk pertanyaan Replace ...?, dan pilih Don't Save untuk pertanyaan Save ...?
 
Gambar 4. Tutup jendela Control, pilih Yes untuk pertanyaan Replace ...? dan Don't Save untuk pertanyaan Save ...?

8. Perbanyak Home Button yang telah berubah gambarnya sebanyak 9 buah, dan tempatkan seperti gambar berikut ini.

Gambar 5. Perbanyak Home Button sebanyak 9 buah

9. Ubah gambar dengan Advanced-Customize seperti langkah 6 di atas, buat sehingga ke-9 tombol tersebut menampilkan 9 jenis kopi.

Gambar 6. Gunakan Advanced-Customize untuk menghasilkan 9 gambar jenis kopi pada tombol

10. Ambil sebuah Cluster, dari kategori Array, Matrix & Cluster. Perbesar ukuran Cluster tersebut, kemudian tempatkan ke-9 tombol tersebut ke dalam Cluster.

Gambar 7. Tempatkan ke-9 tombol tersebut ke dalam Cluster

11. Klik kanan Cluster, pilih AutoSizing, pilih Size to Fit. Berikutnya, ambil Tab Control dari kategori Containers. 

Gambar 8. Ambil Tab Control

12. Tempatkan ujung kiri atas Tab Control tepat pada titik tengah halaman LabVIEW (titik persilangan garis horizontal dan vertikal). Kemudian ketik teks di halaman kosong: "Pilih Minumanmu..."

Gambar 9. Tempatkan Tab Control di tengah halaman, ketik teks "Pilih Minumanmu..."

13. Ambil objek bergambar tanda tanya (ada di halaman), dan tempatkan di samping kanan Cluster yang berisi 9 tombol.

Gambar 10. Tempatkan objek Ring Picture dengan gambar tanda tanya

14. Objek bergambar tanda tanya ini dibuat dengan Text & Pict Ring, yang berada di kategori Ring & Enum. Objek Text & Pict Ring ini bisa memuat banyak gambar sekaligus teksnya, di mana setiap anggotanya diberi indeks atau nomor sesuai urutan penempatan.

Gambar 11. Objek bergambar tanda tanya dibuat dari Text & Pict Ring

15. Ambil Play Button di kategori Silver, Boolean, Buttons, dan tempatkan di bawah Ring Picture.

Gambar 12. Ambil Play Button

16. Ambil Stop Button, dari kategori Silver, Boolean, Stop Button, dan tempatkan di bawah Play Button.

Gambar 13. Ambil Stop Button

17. Ubah nama setiap tombol sesuai dengan nama menu/jenis kopi

Gambar 14. Sesuaikan nama menu ke-9 jenis kopi pada tombol

18. Tekan tombol Control dan T untuk membuat jendela Front Panel dan Block Diagram berdampingan. Di jendela Block Diagram, tempatkan While Loop, yang ada di kategori Structure.

Gambar 15. Di Block Diagram, ambil While Loop

19. Tambahkan fungsi Wait (ms), isi inputnya dengan klik kanan, pilih Create, pilih Constant, isi dengan angka 100. Kemudian hubungkan icon Stop Button ke input Loop Condition.

Gambar 16. Tambahkan fungsi Wait (ms), isi dengan 100, dan hubungkan Stop Button dengan Loop Condition

20. Di Block Diagram, di dalam While Loop, ada Wait (ms) dengan nilai 100 dan Stop Button terhubung dengan Loop Condition.

Gambar 17. Block Diagram berisi While Loop dengan isi fungsi Wait(ms) = 100 dan Stop Button terhubung ke Loop Condition

21. Tempatkan icon Cluster ke dalam While Loop, hubungkan dengan fungsi Cluster to Array, dan kemudian ke fungsi Search 1D Array, dengan input element diberi nilai True constant. 

Gambar 18. Hubungkan Cluster dengan fungsi Cluster to Array dan Search 1D Array

22. Ambil Case Structure, dari kategori Structure, dan hubungkan input tanda tanya dengan output Search 1D Array. Secara otomatis label True akan berubah menjadi 1, dan label False, Default akan berubah menjadi 0, Default. Tempatkan objek Pilihan ke dalam While Loop.

Gambar 19. Tempatkan Case Structure, hubungkan ke output Search 1D Array, dan juga tempatkan objek Pilihan ke dalam While Loop

23. Perbanyak Case dengan klik kanan label Case Structure, pilih Add Case After, dan buat secara berturut-turut label 2 hingga 8, kemudian di label 0, klik kanan, pilih Add Case Before, isi label dengan -1, dan klik kanan, pilih Make This The Default Case. Gambar berikut menunjukkan hasil penambahan Case tersebut.
Gambar 20. Pilih Add Case After untuk menambah Case 2 - 8 dari Case 1, dan pilih Add Case Before untuk menambah Case -1 dari Case 0, buat Case -1 menjadi Default Case

24. Tambahkan Shift Register dengan cara klik kanan While Loop, pilih Add Shift Register, kemudian beri nilai awal Shift Register yang kiri dengan Numeric Constant, isi dengan angka -1. Hubungkan Shift Register kiri dengan Shift Register kanan, melalui Case -1 pada Case Structure.

Gambar 21. Tambahkan Shift Register, hubungkan melalui Case -1

25. Untuk Case 0 sampai 8, hubungkan input tanda tanya Case Structure dengan terminal Shift Register yang kanan, melalui terusan (kotak kecil) yang telah dibuat di Case -1. Hubungkan juga objek Pilihan dengan garis Shift Register, dengan tambahan fungsi Increment (+1).

Gambar 22. Untuk Case 0 sampai 8, hubungkan input tanda tanya dengan terminal Shift Register yang kanan, hubungkan juga objek Pilihan dengan garis data Shift Register dengan tambahan increment

26. Tempatkan Play Button di dalam While Loop. Klik kanan Tab Control, pilih Create Local Variable, tempatkan di dalam While Loop. Klik kanan input Local Variable Tab Control, pilih Create Constant, pilih Page-2. Tambahkan Case Structure, dan hubungkan input tanda tanya dengan Play Button. Dengan kode program seperti itu, setiap kali penekanan tombol Play Button akan membuat Tab Control menampilkan Page-2.

Gambar 23. Buat setiap kali tombol Play Button ditekan, Tab Control menampilkan Page-2

27. Berikutnya diinginkan ada tahapan proses sebanyak 10 buah, dengan masing-masing proses memakan waktu 5 detik, atau sama dengan nilai counter 50 untuk interval 100 milidetik. Untuk itu tambahkan Shift Register, beri nilai awal dengan fungsi Initialize Array, dengan nilai element 50 dan dimension size 10. Hubungkan Array Counter ke garis data Shift Register ini.

Gambar 24. Tambahkan Shift Register, dengan nilai awal berupa Array 10 anggota, masing-masing bernilai 10, hubungkan garis data Shift Register ini ke Array Counter

28. Diinginkan, Array Counter mensimulasikan tahapan proses, dengan nilai waktu akan berjalan mundur, dan ketika nilai waktu mencapai 0, maka akan menjalankan proses berikutnya. Untuk membuat hal ini, sisipkan Replace Array Subset pada garis data Shift Register Array Counter. Beri nilai indeks 0, dan new element dengan nilai dari Shift Register yang dikurangi 1 apabila nilainya lebih dari 0.

Gambar 25. Menambahkan fungsi Replace Array Subset, yang nilainya dikurangi 1 mulai dari indeks pertama, dan pengurangan berhenti ketika nilainya sudah mencapai 0

29. Diinginkan pengurangan tidak hanya ketika nilai lebih dari 0, tetapi juga ketika Tab Control menampilkan Page-2. Untuk itu sisipkan fungsi AND, kemudian tambahkan Tab Control, fungsi Equal dan Page-2 constant.

Gambar 26. Buat agar syarat pengurangan tidak hanya ketika nilai yang dikurangi lebih dari 0, tetapi juga ketika Tab Control menampilkan Page-2

30. Agar proses berlanjut ke tahapan berikutnya, tambahkan Shift Register untuk menghasilkan pertambahan nilai indeks, yang akan bertambah 1 ketika nilai waktu di indeks sebelumnya telah mencapai 0.

Gambar 27. Ketika nilai mencapai 0, maka nilai indeks akan bertambah 1 untuk menjalankan proses berikutnya

31. Ketika nilai belum mencapai 0, maka tidak dilakukan penambahan indeks

Gambar 28. Ketika Case False, maka tidak ada penambahan indeks pada garis data Shift Register indeks

32. Jalankan program LabVIEW, tekan tombol Play Button (Start Proses), maka Page 2 muncul, dan Array Counter akan mengurangi angka mulai dari angka di indeks pertama, kemudian setelah mencapai 0, berlanjut ke indeks berikutnya, dan berhenti ketika semua nilai di indeks 0 - 10 telah bernilai 0.

Gambar 29. Jalankan program LabVIEW, tekan tombol Play Button (Start Proses), maka Array Counter akan menghitung mundur, mulai dari kotak pertama, dan ketika mencapai 0, akan berlanjut ke kotak berikutnya

33. Berikutnya, diinginkan angka di Array Counter bervariasi mengikuti pilihan menu jenis kopi, yaitu sesuai dengan Tabel 2. Untuk itu, putus garis data Shift Register Array Counter, lewatkan pada Case Structure di Case -1.

Gambar 30. Putus garis data Shift Register Array Counter, lewatkan di Case -1

34. Di Case 0 (pilihan Ristretto), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 50,0,50,0,0,0,0,50,0,0 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 31. Di Case 0, buat Array Constant, isi dengan data 50,0,50,0,0,0,0,50,0,0

35. Di Case 1 (pilihan Espresso), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 100,0,100,0,0,0,0,100,0,0 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 32. Di Case 1, buat Array Constant, isi dengan data 100,0,100,0,0,0,0,100,0,0

36. Di Case 2 (pilihan Lungo), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 150,0,150,0,0,0,0,150,0,0 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 33. Di Case 2, buat Array Constant, isi dengan data 150,0,150,0,0,0,0,150,0,0

37. Di Case 3 (pilihan Americano), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 150,0,50,0,0,100,0,50,0,0 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 34. Di Case 3, buat Array Constant, isi dengan data 150,0,50,0,0,100,0,50,0,0

38. Di Case 7 (pilihan Vienna), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 50,0,50,50,100,0,0,50,50,100 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 35. Di Case 7, buat Array Constant, isi dengan data 50,0,50,50,100,0,0,50,50,100

39. Di Case 8 (pilihan Cacao), buat Array Constant, dengan jumlah kotak 10, dengan isi berturut-turut 50,50,0,100,50,0,50,0,100,50 mengikuti Tabel 2. Hubungkan output Array ini dengan terusan data ke garis data Shift Register Array Counter.

Gambar 36. Di Case 8, buat Array Constant, isi dengan data 50,50,0,100,50,0,50,0,100,50

40. Berikutnya, agar penambahan indeks tidak berjalan terus-menerus, tambahkan syarat, selain ketika nilai di indeks sebelumnya bernilai 0, juga ketika Tab Control menampilkan Page-2, serta nilai indeks kurang dari 10. Gunakan fungsi Compound Arithmetic, pilih fungsi AND. 

Gambar 37. Tambahkan syarat untuk penambahan indeks, yaitu tidak hanya bernilai 0, tetapi juga ketika Tab Control menampilkan Page-2, dan nilai indeks kurang dari 10

41. Agar status proses yang berjalan dapat terlihat, masukkan objek Array Status, tambahkan fungsi Initialize Array dengan element True Constant dan dimension size = 10, Hubungkan output Initialize Array ke Array Status melewati fungsi Replace Array Subset. Beri nilai indeks Replace Array Subset dengan garis data Shift Register indeks, dan nilai new element dengan nilai True.

Gambar 38. Buat agar proses yang sedang berjalan dapat ditampilkan dalam bentuk nyala LED di Array Status

42. Tempatkan Array Status berdampingan dengan Array Counter dan Keterangan Proses, di Page-2, seperti gambar berikut.

Gambar 39. Tempatkan Array Status, Array Counter dan Keterangan Proses di Page-2

43. Ketika proses selesai, diinginkan dapat kembali ke Page-1, untuk itu tambahkan Jump Button, yang diambil dari kategori Silver, Boolean, Buttons, Jump Button. Buat program seperti Play Button, yaitu dengan Create Local Variable Tab Control, kemudian di input Local Variable Tab Control, klik kanan, Create Constant, dan pilih Page-1. Tambahkan Case Structure agar perpindahan ke Page-1 hanya bisa dilakukan ketika tombol Jump Button ini ditekan.


Gambar 40. Tambahkan Jump Button yang akan membuat Tab Control berpindah ke Page-1 setiap kali tombol ini ditekan

44. Diinginkan ada tampilan tulisan "Mesin kopi sedang membuat ..." di mana jenis kopinya bisa mengikuti jenis kopi yang dipilih. Untuk menampilkan jenis kopi yang dipilih, klik kanan objek Pilihan, pilih Create Property Node, pilih Ring Text, pilih Text.

Gambar 41. Agar bisa menampilkan jenis kopi yang dipilih dalam teks, klik kanan objek pilihan, Create Property Node, pilih Ring Text, pilih Text.

45. Tambahkan fungsi Concatenate String, beri input pertama dengan String yang berisi tulisan: "Mesin Kopi sedang membuat ", kemudian di input kedua hubungkan dengan Property Node Ring Text, dan di output dari Concatenate String, klik kanan, pilih Create Indicator.

Gambar 42. Gunakan fungsi Concatenate String untuk menyambung tulisan "Mesin Kopi ini sedang membuat " dengan jenis kopi yang dipilih

46. Berikutnya, di Front Panel, tempatkan objek Ring Picture bergambar kopi Ristretto (berlabel Pengisian), dan juga objek Ring Picture kotak kosong (berlabel Penutup). Tempatkan keduanya saling bertumpuk dengan gambar Penutup di atas gambar Pengisian, tempatkan sesuai posisinya di Page-2. Diinginkan objek Label Penutup ini akan bergerak ke atas, membuka gambar pengisian di bawahnya.

Gambar 43. Di Front Panel, tempatkan gambar Penutup di atas gambar Pengisian, dan tempatkan di Page-2 sesuai posisinya

47. Setelah kedua objek ditempatkan, di Block Diagram, klik kanan icon Penutup, pilih Create Property Node, pilih Position, pilih Top. 

Gambar 44. Untuk mengetahui posisi awal dari icon Penutup, klik kanan icon ini, pilih Create Property Node, pilih Position, Pilih Top

48. Klik kanan output icon Top Penutup ini, pilih Create Indicator. Jalankan program LabVIEW dan perhatikan nilai posisi icon Penutup ini di Front Panel.

Gambar 45. Klik kanan output icon Top Penutup, pilih Create Indicator

Gambar 46. Jalankan program LabVIEW, perhatikan nilai Top posisi Penutup

49. Setelah mengetahui nilai posisinya, buat Shift Register untuk posisi penutup ini, beri nilai awal Shift Register ini dengan nilai yang muncul di Front Panel. Buat pengurangan nilai 0.5 ketika nilai indeks mencapai angka 5 hingga 9 (nilai indeks 5 = penuangan air, 6 = penuangan coklat, 7 = penuangan kopi, 8 = penuangan susu, 9 = penuangan krim). Ketika nilai Top objek dikurangi, maka posisinya menjadi semakin ke atas.

Gambar 47. Kurangi nilai Top Penutup dengan 0.5 setiap kali nilai indeks berada di angka 5 sampai 9

51. Ketika nilai indeks di luar angka 5 - 9, maka tidak dilakukan pengurangan pada nilai Top Penutup

Gambar 48. Tidak dilakukan pengurangan apabila nilai indeks tidak berada pada nilai 5 - 9

52. Terakhir, buat fungsi reset (kembali ke nilai awal) untuk Shift Register nilai indeks dan juga Shift Register nilai Top Penutup. Gunakan tombol Play Button mengaktifkan fungsi reset ini, dan gunakan Select untuk pengaturannya.

Gambar 49. Kembalikan ke nilai awal untuk nilai indeks dan nilai Top Penutup, yang akan dilakukan setiap kali tombol Play Button ditekan

53. Agar setiap kali program LabVIEW dijalankan, tampilan Tab Control selalu menampilkan Page-1, buat Tab Control menjadi Indicator, kemudian klik kanan kaki input Tab Control, Create Constant, pilih Page-1. Juga hubungkan Picture Ring Pengisian ke Shift Register pilihan.

Gambar 50. Agar setiap kali program LabVIEW dijalankan, tampilan Tab Control selalu dimulai dari Page-1, klik kanan kaki input Tab Control, Create Constant, pilih Page-1, hubungkan juga Picture Ring ke Shift Register pilihan

54. Untuk memudahkan rekan-rekan dalam pembuatan program di atas, silahkan rekan-rekan bisa mengunduh hasil pembuatan program HMI ini di link ini: 

55. Berikut ini video singkat pembuatan program di atas:

Video pembuatan HMI Mesin Kopi dengan LabVIEW


Langkah 5. Hubungkan HMI dengan Arduino

Berikut ini langkah-langkahnya:

1. Buka Wokwi berikut ini: https://wokwi.com/projects/444102214937055233

Gambar 51. Tampilan Wokwi untuk HMI mesin Kopi

Keterangan program: Ada 10 proses yang disimulasikan dalam bentuk 5 buah Relay untuk proses pemanasan air, ekstraksi coklat, ekstraksi kopi, perebusan susu, pengocokan susu, dan 5 buah motor Servo untuk proses penuangan air, penuangan coklat, penuangan kopi, penuangan susu dan penuangan krim. Di samping itu, ditambahkan juga sebuah Encoder untuk memilih menu, dan tombol Encoder untuk penekanan tombol Play Button (Start Proses). Juga ditambahkan sebuah tombol Ambil untuk mengambil minuman dan juga membuat tampilan HMI kembali ke tampilan awal.

2. Buka program HMI LabVIEW yang telah dibuat di atas, tekan tombol Control dan T untuk membuat jendela Front Panel dan Block Diagram berdampingan.

Gambar 52. Buka program LabVIEW, tekan tombol Control dan T untuk membuat Front panel dan Block Diagram berdampingan

3. Tambahkan VISA Configure Serial Port, VISA Bytes at Port, VISA Read, VISA Write, VISA Close, yang diambil dari Serial, di kategori Instrument I/O.

Gambar 53. Ambil VISA Configure Serial Port, VISA Bytes at Port, VISA Read, VISA Write, VISA Close dari Serial, dari Instrument I/O

4. Hubungkan VISA Configure Serial Port, VISA Bytes at Port, VISA Read, VISA Write, VISA Close seperti gambar di bawah ini. Tempatkan VISA Bytes at Port, VISA Read dan VISA Write di dalam While Loop.

Gambar 54. Hubungkan VISA Configure Serial Port, VISA Bytes at Port, VISA Read, VISA Write dan VISA Close

5. Klik kanan kaki visa resource name Configure Serial Port, pilih Create Control, maka akan muncul kotak Control VISA Resource Name untuk memilih Port COM, untuk komunikasi serial.

Gambar 55. Munculkan kotak VISA Resource Name untuk memilih Port COM

6. Agar VISA Read hanya bekerja ketika ada data di Port, atau dengan kata lain nilai Bytes at Port lebih besar dari 0, maka tambahkan fungsi lebih besar dari 0 di kaki output Bytes at Port, dan kemudian hubungkan outputnya ke input Case Structure (terminal berisi tanda tanya).

Gambar 56. Tambahkan fungsi lebih besar dari 0, sambungkan output Bytes at Port dengan input tanda tanya Case Structure melalui fungsi tersebut

7. Di Case False, teruskan garis data dari VISA Bytes at Port ke VISA Write.

Gambar 57. Teruskan garis data VISA Bytes at Port ke VISA Write

8. Pindahkan Cluster, Cluster to Array dan Search 1D Array ke dalam kotak Case False Case Structure VISA Read, buat garis data output Search 1D Array ke input Case Structure Pilihan. 

Gambar 58. Pindahkan Cluster, Cluster to Array dan Search 1D Array ke dalam kotak Case Structure VISA Read

9. Di Case True, tambahkan fungsi Trim Whitespace dan sebuah kotak Case Structure untuk memisahkan data yang dikirim oleh Arduino., yaitu memisahkan karakter huruf dengan karakter angka. Di Case Structure yang baru, ubah label "True" menjadi "0".."9", dan isi kotak di dalamnya dengan fungsi Decimal String to Number. Hubungkan output fungsi ini ke terusan yang telah dibuat sebelumnya dengan fungsi Cluster, Cluster to Array, Search 1D Array.

Catatan: Arduino akan mengirim karakter "a" untuk alternatif tombol Start Proses, dan mengirim karakter "b" untuk alternatif tombol Ambil Minuman, serta karakter "0" - "8" untuk alternatif tombol pemilihan menu kopi. 

Gambar 59. Tambahkan fungsi Trim Whitespace dan kotak Case Structure, di kotak Case Structrue, di label "0".."9", isi dengan Decimal String to Number

10. Di Case True Case Structure VISA Read, teruskan garis data dari output Trim Whitespace keluar kotak Case Structure, hubungkan dengan fungsi Equal dan huruf a. Di Case Structure yang baru, di Case False, untuk kotak biru yang masih kosong, klik kanan kotak tersebut, pilih Create Constant, isi dengan angka -1. Dengan cara ini, ketika Arduino mengirim huruf "a", atau mengirim huruf "b", maka output Decimal String to Number bukan lagi angka 0, tetapi angka -1.

Gambar 60. Di Case False, isi dengan angka -1 supaya ketika huruf "a" atau "b" diterima dari Arduino, maka nilai yang diberikan ke Shift Register pilihan bukan angka 0, tetapi angka -1

11. Di output Equal = a, tambahkan fungsi OR, dan hubungkan output Play Button yang di-AND-kan dengan >= 0 ke input OR kedua, dengan tujuan ketika huruf "a" diterima dari Arduino, maka seolah-olah Play button (Start proses) ditekan.

Gambar 61. Tambahkan fungsi OR, buat input terhubung dengan fungsi Equal = a, dan Play Button yang di-AND-kan dengan fungsi >=0

12. Pindahkan Jump Button dan Case Structure yang berisi Tab Control di Page-1 mendekati VISA Read.

Gambar 62. Pindahkan Jump Button dan Case Structure mendekati VISA Read

13. Tambahkan fungsi Equal = b, dan tambahkan fungsi OR, hubungkan Jump Button ke input fungsi OR yang kedua, dengan tujuan, ketika huruf b diterima dari Arduino, maka seolah-olah Jump Button (Ambil minuman) ditekan.

Gambar 63. Tambahkan fungsi Equal = b, dan tambahkan fungsi OR, hubungkan Jump Button ke input fungsi OR kedua

14. Agar terusan garis data fungsi Equal = a dan Equal = b yang menembus Case Structure terisi penuh, klik kanan kotak kecil tersebut, pilih Use Default If Unwired.

Gambar 64. Klik kanan kotak kecil kosong pada Case Structure, pilih Use Default If Unwired

15. Buat garis data Shift Register indeks menjadi input untuk VISA Write. Berhubung input VISA Write harus bertipe String, maka gunakan fungsi Number to Decimal String untuk mengubah data numerik Shift Register indeks menjadi String. Agar data yang dikirimkan ke Arduino memiliki akhiran data, gunakan fungsi Concatenate String untuk menggandengkan data indeks dengan Carriage Return. 

Gambar 65. Tambahkan fungsi Number to Decimal String untuk mengubah data indeks menjadi String, dan gunakan Concatenate String untuk menambahkan Carriage Return pada String data indeks, kemudian hubungkan outputnya ke input VISA Write

16. Agar VISA Write tidak mengirimkan data indeks terus-menerus, yaitu hanya mengirimkan ketika terjadi perubahan data indeks, maka tambahkan Case Structure.

Gambar 66. Tambahkan Case Structure agar VISA Write tidak mengirimkan data indeks terus-menerus, yaitu hanya mengirimkan ketika terjadi perubahan data indeks

17. Agar data indeks hanya dikirimkan ketika terjadi perubahan data, hubungkan input Case Structure VISA Write dengan garis data dari input Case Structure increment (+1) pada Shift Register indeks.

Gambar 67. Hubungkan input Case Structure VISA Write dengan input Case Structure Increment Indeks

18. Agar di awal proses, ada data yang dikirimkan ke Arduino, maka sisipkan fungsi OR ini ke input Case Structure VISA Write, hubungkan input kedua OR ini dengan Play Button yang telah di-AND-kan dengan fungsi >=0, dan di-OR-kan dengan fungsi Equal = b.

Gambar 68. Tambahkan fungsi OR agar di awal proses, ada data yang dikirimkan ke Arduino

19. Agar kotak VISA Resource Name di Front Panel lebih baik tampilannya, gunakan VISA Resource Name yang ada di kategori Silver, di kategori I/O. Untuk menggantinya, klik kanan kotak VISA Resource Name, pilih Replace, pilih Silver, pilih I/O.

Gambar 69. Klik kanan kotak VISA Resource Name, pilih Replace, Pilih Silver, pilih I/O, pilih VISA Resource Name

20. Seharusnya muncul daftar COM yang tersedia ketika tombol drop down di samping kotak VISA Resource Name ditekan.

Catatan: Apabila daftar COM ini tidak muncul, ada 2 hal yang perlu dilakukan. Pertama, instal software driver VISA, yang dapat rekan-rekan unduh di link ini: VISA530.exe. Kedua, instal software pembuat pasangan port virtual, yang dapat rekan-rekan unduh di link ini: HHD Virtual Serial Port Apabila kedua software tersebut telah diinstal, seharusnya akan muncul daftar COM seperti gambar di bawah ini.

Gambar 70. Ketika tombol drop down di kotak VISA Resource Name ditekan, maka muncul daftar COM yang tersedia

21. Dari daftar COM yang tersedia, pilih salah satu pasangan COM, dalam contoh di sini, digunakan pasangan COM5 dan COM6; COM5 untuk LabVIEW dan COM6 untuk Arduino di Wokwi. Untuk LabVIEW, sebelum menekan tombol Run, pilih dulu COM yang digunakan, baru tekan tombol Run. Untuk Wokwi, buka link ini: https://wokwi.com/projects/444102214937055233, tekan tombol Run, seharusnya muncul kotak dialog pemilihan COM seperti gambar berikut ini. Pilih pasangan COM, kemudian tekan tombol Connect.

Gambar 71. Pilih COM di LabVIEW, tekan tombol Run, berikutnya buka Wokwi, tekan tombol Run, pilih COM yang berpasangan dengan COM di LabVIEW, tekan Connect

22. Jalankan LabVIEW, kemudian pilih salah satu kopi, tekan tombol Start Proses, maka seharusnya tampilan proses akan muncul. Perhatikan juga tampilan Serial Monitor Wokwi, seharusnya muncul informasi proses yang sedang terjadi, dan Relay serta Servo bekerja sesuai urutan proses.

Gambar 72. Di HMI LabVIEW, pilih salah satu jenis kopi, kemudian tekan tombol Start Proses, maka halaman proses akan muncul, dan perhatikan tampilan Serial Monitor Wokwi

23. Ketika tombol Ambil Minuman ditekan, halaman pilihan kopi akan muncul, hanya saja, pilihan sebelumnya masih muncul. Diinginkan setiap kali tombol Ambil Minuman ditekan, pilihan akan direset mulai dari awal (gambar tanda tanya). Untuk membuat hal ini, tambahkan fungsi Select pada Shift Register Pilihan, beri kaki input s dari Jump Button yang di-OR-kan dengan fungsi Equal = b, dan beri kaki input t dengan nilai 0.

Gambar 73. Tambahkan fungsi Select, yang akan mereset Shift Register pilihan setiap kali tombol Jump Button (Ambil Minuman) ditekan

24. Jalankan kembali LabVIEW dan perhatikan bahwa menu juga bisa dipilih dengan knob Encoder di Wokwi, dan juga penekanan switch Encoder bisa menggantikan tombol Start Proses, dan setelah proses selesai, tombol Ambil di Wokwi juga bisa digunakan untuk menggantikan tombol Ambil Minuman di LabVIEW.

Gambar 74. HMI LabVIEW dapat juga dijalankan dari Encoder dan tombol yang terhubung ke Arduino di Wokwi

25. Untuk memudahkan rekan-rekan dalam pembuatan program di atas, silahkan rekan-rekan bisa mengunduh hasil pembuatan program HMI kedua ini di link ini: 
https://drive.google.com/file/d/1uApgx-vm73eQX80L3mjnAJ0hX8yjPX2v/view?usp=sharing

2 komentar:

  1. terimakasih sudah menyempatkan diri membuat tutorial yg sangat detail pak

    BalasHapus