8. Simulasi Pengisian, Penutupan dan Pelabelan Botol

 Ada 7 tahapan pembuatan simulasi ini, yaitu:

  1. Pembuatan Objek Animasi
  2. Pembuatan Simulasi Proses untuk 1 Botol
  3. Penambahan Komunikasi Serial1
  4. Penambahan Komunikasi Modbus RTU1
  5. Penambahan Komunikasi Modbus TCP1
  6. Penambahan Komunikasi MQTT1
  7. Pembuatan Simulasi Proses untuk Banyak Botol
  8. Penambahan Komunikasi Serial2
  9. Penambahan Komunikasi Modbus RTU2
  10. Penambahan Komunikasi Modbus TCP2
  11. Penambahan Komunikasi MQTT2
Berikut ini uraian masing-masing tahapan di atas:

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

8.1 Pembuatan Objek Animasi

Target Gambar:
  • Membuat tampilan seperti gambar berikut:
Gambar 1.1 Target tampilan gambar
  • Membuat objek animasi untuk konveyor 1 dan 2
  • Membuat objek animasi untuk botol merah, hijau, biru, kuning dan ungu
  • Membuat objek animasi untuk penutupan botol
  • Membuat objek animasi untuk pelabelan teks dan warna
Berikut ini langkah-langkah pembuatannya:
1. Download file gambar di link berikut ini, dan ekstraks. ini: https://drive.google.com/file/d/16m0KU2zszx8DjMrV7dLQ67YDHE03KPrZ/view?usp=sharing
2. Buka LabVIEW dan tarik file gambar background.png dari Windows Explorer ke halaman Front Panel. 
3. Posisikan gambar sehingga 2 buah garis kecil yang bersilangan berada tepat di atas titik pusat halaman Front Panel, seperti terlihat pada Gambar 2 berikut.

Gambar 1.2 Tempatkan background.png di Front Panel, posisikan garis yang bersilangan tepat di titik pusat 

4. Setelah gambar background berhasil ditempatkan, langkah berikutnya, membuat animasi konveyor1. Tarik 2 file gambar conv1a.png dan conv1b.png dari Windows Explorer ke halaman Front Panel.
5. Ambil objek Flat Square Button, dari kategori Classic, Classic Boolean.

Gambar 1.3 Tempatkan file gambar conv1a.png dan conv1b.png di Front Panel, diikuti dengan objek control Flat Square Button dari kategori Classic Boolean

6. Klik kanan objek Flat Square Button, pilih Advanced, pilih Customize.

Gambar 1.4 Klik kanan objek Flat Square Button, pilih Advance, pilih Customize

7. Muncul jendela baru dengan objek Flat Square Button. Klik tombol Change to Customize Mode. Setelah gambar kunci pas (mode Edit) berubah menjadi gambar tang (mode Customize), klik kanan objek Flat Square Button, pilih Import Picture from Clipboard. Namun sebelum memilih Import Picture from Clipboard, pilih dulu objek gambar yang akan di-import, dan salin (copy) dengan menekan Ctrl dan C, baru setelah itu lakukan import.

Gambar 1.5 Di mode Customize, copy gambar yang akan diimport, kiemudian pilih Import Picture from Clipboard

8. Maka gambar kotak akan berubah menjadi gambar konveyor. Karena ada 2 sisi pada objek Flat Square Button, lakukan hal yang serupa pada sisi kedua. Pengubahan sisi A ke sisi B dilakukan pada mode Edit (gambar kunci pas), klik tombol Change to Edit mode, kemudian klik gambar objek hingga berubah menjadi gambar kotak hitam. 

Gambar 1.6 Objek Flat Square Button telah berubah menjadi gambar konveyor. Agar tidak hanya satu sisi saja yang diubah, maka klik tombol mode hingga menjadi gambar kunci pas, dan kemudian klik gambar konveyor hingga berubah menjadi gambar kotak hitam

9. Setelah menjadi gambar kotak hitam, klik tombol mode hingga berubah menjadi gambar tang (mode Customize). Kemudian copy gambar konveyor kedua dengan menekan tombol Ctrl dan C, setelah itu di gambar kotak hitam, klik kanan, pilih Import Picture from Clipboard.

Gambar 1.7 Lakukan pengubahan sisi kedua objek Flat Square Button, copy gambar konveyor kedua, di mode Customize, klik kanan gambar kotak hitam, pilih Import Picture from Clipboard 

10. Maka gambar kotak hitam akan berubah menjadi gambar konveyor kedua. Klik tombol silang untuk menutup jendela. Muncul pertanyaan "Replace ...?", pilih Yes.

Gambar 1.8 Tutup jendela, pilih Yes pada pertanyaan "Replace ...?"

11. Muncul jendela pertanyaan "Save changes before closing?" Pilih Don't Save.
12. Tempatkan objek Flat Square Button yang gambarnya telah berubah menjadi Konveyor seperti gambar berikut ini. Agar gambar Konveyor ini berada di belakang gambar Background, klik pada objek Konveyor, klik tombol Reorder, pilih Move to Back.

Gambar 1.9 Tempatkan objek Konveyor di belakang gambar piringan, untuk itu klik objek, klik tombol Reorder, pilih Move to Back.

13. Berikutnya, ulangi hal yang sama untuk pembuatan objek Konveyor kedua. Gunakan objek Flat Square Button, dan ikuti langkah-langkah sesuai gambar berikut ini:

Gambar 1.10 Ambil objek Flat Square Button dan 2 buah file gambar conv2a.png dan conv2b.png


Gambar 1.11 Klik kanan objek Flat Sqyare Button, pilih Advance, pilih Customize

Gambar 1.12 Ubah mode Edit ke mode Customize, klik pada gambar konveyor dan tekan tombol Ctrl dan C untuk meng-copy gambar, kemudian klik kanan gambar kotak putih di jendela yang baru, pilih Import Picture from Clipboard

Gambar 1.13 Maka gambar kotak putih akan berubah menjadi gambar Konveyor. Ubah mode Customize ke mode Edit agar sisi kedua dari objek Flat Square Bitton juga diisi dengan gambar Konveyor

Gambar 1.14 Di mode Edit, klik gambar konveyor sehingga berubah menjadi gambar kotak hitam. Kemudian ubah mode Edit ke mode Customize, copy gambar Konveyor kedua, klik kanan gambar kotak hitam, pilih Import Picture from Clipboard

Gambar 1.15 Maka gambar kotak hitam akan berubah menjadi gambar konveyor. Tutup jendela, pada pertanyaan "Replace..?", pilih Yes


Gambar 1.16 Muncul jendela pertanyaan "Save changes before closing?", pilih Don't Save

Gambar 1.17 Hapus gambar Konveyor yang sudah tidak lagi digunakan (jangan sampai keliru menghapus objek Flat Square Button yang sudah diubah tampilannya). Tempatkan objek Konveyor kedua di belakang piringan, dengan menggunakan Reorder, pilih Move to Back

Gambar 1.18 Buka Block Diagram, maka seharusnya muncul 2 buah icon Boolean yang merupakan objek Flat Square Button dengan tampilan gambar konveyor

14. Klik beberapa kali objek Konveyor, baik objek Konveyor1 maupun Konveyor2. Perhatikan setiap kali objek di-klik, Konveyor terlihat seolah-olah bergerak maju/mundur. 
15. Setelah animasi dengan objek Flat Square Button berhasil, langkah berikutnya adalah membuat animasi dengan objek Ring Picture. Objek Ring Picture ini dapat menampung lebih banyak gambar. Buka Windows Explorer, pilih 25 gambar botol, mulai dari botol kosong hingga botol diberi label, dan kemudian seret keluar ke halaman Front Panel, seperti ditunjukkan pada gambar berikut.

Gambar 1.19 Seret keluar 25 gambar botol di salah satu folder (contoh red bottle) dan tempatkan di Front Panel

Gambar 1.20 Di halaman Front Panel, klik kanan halaman, ambil objek Classic Picture Ring

16. Perbesar ukuran objek Ring Picture. Kemudian masukkan satu persatu gambar botol ke objek Ring Picture, mulai dari botol kosong hingga diberi label. Cara memasukkan gambar, copy gambar yang akan dimasukkan, kemudian gunakan Import Picture from Clipboard untuk gambar pertama, dan gunakan Import Picture After untuk gambar kedua dan seterusnya. Agar tidak keliru memasukkan gambar yang sama, gunakan Ctrl + X untuk meng-copy gambar, agar gambar yang di-copy, juga sekaligus dihapus.

Gambar 1.21 Masukkan satu persatu gambar ke dalam Ring Picture, mulai dari gambar botol kosong hingga botol diberi label. Gunakan Import Picture from Clipboard untuk gambar pertama, dan gunakan Import Picture After untuk gambar kedua hingga gambar terakhir. Agar tidak memasukkan gambar yang sama, gunakan Ctrl + X untuk meng-copy sekaligus menghapus (cut)

Gambar 1.22 Perbesar ukuran Ring Picture, ketika objek Ring Picture diklik, akan muncul daftar gambar yang sudah dimasukkan, pastikan bahwa urutannya benar, mulai dari botol kosong hingga terisi penuh, diberi tutup dan diberi label

17. Agar tampilan gambar lebih bagus, maka kotak frame pada Ring Picture sebaiknya dihilangkan. Gunakan mode Customize untuk menghilangkan kotak frame. Untuk itu klik kanan objek Ring Picture, pilih Advance, pilih Customize. 

Gambar 1.23 Setelah ke-25 gambar sudah berhasil dimasukkan semua, langkah berikutnya adalah menghilangkan kotak frame pada Ring Picture. Untuk menghilangkannya, klik kanan, pilih Advance, pilih Customize

18. Ubah mode Edit (gambar kunci pas) menjadi mode Customize (gambar tang). Di mode Customize, tarik keluar kotak canvas dan gambar botol dari kotak frame. Karena kotak frame dan kotak canvas tidak bisa dihapus, maka cara mudah untuk membuat keduanya tidak tampak adalah dengan memberi warna transparan pada kedua kotak tersebut. Tekan tombol Shift sekaligus klik kanan hingga muncul palet Tool. Pilih atau klik gambar kuas di palet Tool

Gambar 1.24 Karena kotak frame dan kotak canvas tidak bisa dihapus, maka agar keduanya tidak terlihat, cara paling mudah adalah dengan memberi keduanya warna transparan

19. Klik kanan pada kotak kanvas, muncul kotak warna. Klik kotak di ujung kanan atas dengan tulisan huruf T, maka kotak kanvas sekarang berwarna Transparans. Ulangi hal yang serupa untuk kotak frame.

Gambar 1.25 Beri warna transparan pada kotak kanvas dan kotak frame

20. Setelah keduanya berwarna transparan, kembalikan mode tool dari kuas warna ke otomatis, dengan menyalakan LED indikator di palet Tool. Tekan tombol Shift dan klik knanan untuk memunculkan palet Tool.

Gambar 1.26 Kembalikan tool dari mode kuas warna ke otomatis

21. Berikutnya, agar ukuran kotak frame dan kotak kanvas sesuai dengan ukuran botol, pilih ketiganya dengan meng-klik gambar, sambil menekan tombol shift, kemudian klik tombol Resize Objects, pilih Minimum Width and Height, maka kotak kanvas dan kotak frame akan berukuran sama dengan gambar botol.

Gambar 1.27 Atur ukuran kotak kanvas dan kotak frame sehingga sesuai ukuran botol

22. Agar gambar botol terlihat dengan jelas (tidak terpotong), sebaiknya lebar kotak kanvas dibuat lebih besar sedikit dari lebar gambar botol, untuk itu perlebar ukuran kotak kanvas (lebih 1 kotak).

Gambar 1.28 Perlebar ukuran kotak kanvas 1 kotak lebihnya agar gambar botol tidak terpotong

23. Setelah pengaturan warna dan ukuran kotak selesai, langkah terakhir adalah menempatkan kotak frame, kotak kanvas dan gambar botol pada posisi semula. Pilih ketiganya dengan meng-klik gambar, sambil menekan tombol shift, kemudian klik Align Objects, pilih Top Edges.

Gambar 1.29 Pilih kotak kanvas, kotak frame dan gambar botol, pilih Align Objects, pilih Top Edges

24. Berikutnya, sementara ketiganya masih terpilih, di kotak Align Objects, klik pada Left Edges.

Gambar 1.30 Kembalikan posisi ketiga objek ke posisi semula, yaitu di pojok kiri atas, setelah klik Top Edges, lanjutkan dengan Left Edges.

25. Berikutnya, agar gambar botol tidak terpotong pada tepinya, buat objek gambar botol berada di tengah-tengah kotak kanvas dan kotak frame. Untuk itu, pilih ketiganya, pilih Horizontal Centers.

Gambar 1.31 Agar gambar botol tidak terpotong, buat kotak frame, kotak kanvas dan gambar botol rata di tengah

26. Tutup jendela Customize, kemudian pilih Yes untuk pertanyaan "Replace ...?".

Gambar 1.32 Tutup jendela Customize, kemudian pilih Yes untuk pertanyaan "Replace ...?"

26. Pilih Don't Save untuk pertanyaan "Save changes before closing?".

Gambar 1.33 Pilih Don't Save untuk pertanyaan "Save changes before closing?"

27. Agar tombol Up/Down di samping Ring Picture tidak terlihat, klik kanan pada Ring Picture, hilangkan tanda centang pada Increment/Decrement.

Gambar 1.34 Agar tombol Up/Down di samping Ring Picture tidak terlihat, klik kanan pada Ring Picture, hilangkan tanda centang pada Increment/Decrement.

28. Maka pembuatan animasi botol dengan 25 gambar botol dan sebuah objek Ring Picture telah berhasil dibuat. Perhatikan, ketika gambar objek Ring Picture di-klik, terlihat daftar 25 gambar botol, mulai dari gambar botol kosong hingga botol diberi label.

Gambar 1.35 Pembuatan animasi botol dengan Ring Picture telah berhasil dibuat.

29. Ulangi cara di atas untuk membuat objek animasi Ring Picture yang lain, yaitu untuk botol green, blue, yellow dan purple, juga untuk animasi penutupan botol, pelabelan botol dan pemutaran piringan. Untuk lebih jelasnya mengenai pembuatan objek animasi ini, silahkan bisa melihat video berikut ini.

Video pembuatan gambar animasi

30. Untuk memudahkan pembuatan, rekan-rekan dapat mengunduh file LabVIEW di link berikut ini: https://drive.google.com/file/d/1lM8biWc2lku1pzU9EbXZ2T8y1ghdINFC/view?usp=sharing
File LabVIEW tersebut sudah berisi objek-objek dengan gambar animasi yang nantinya diperlukan untuk membuat simulasi pengisian, penutupan botol dan pelabelan.


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

8.2 Pembuatan Program untuk 1 Botol


Untuk pembuatan program pengisian, penutupan dan pelabelan satu persatu botol, berikut ini hal-hal yang diperlukan:
Diperlukan 7 buah shift register:
1. Shift register State (berisi item Enum)
2. Shift register left_top_value
3. Shift register color
4. Shift register rotating
5. Shift register capping
6. Shift register labelling
7. Shift register counter_item

Ada 9 item atau state pada  Enum, yaitu:
1. Initial condition
2. Conv1 ON
3. Filling
4. Rotating1
5. Capping
6. Rotating2
7. Labelling
8. Rotating3
9. Conv2 ON

Berikut ini langkah-langkah pembuatannya:
1. Download file program LabVIEW di link berikut ini: https://drive.google.com/file/d/1lM8biWc2lku1pzU9EbXZ2T8y1ghdINFC/view?usp=sharing
Catatan: untuk cara pembuatan objek-objek animasi dalam program LabVIEW tersebut, silahkan bisa melihat video ini: https://www.youtube.com/watch?v=TTvjVPI69UQ
2. Tambahkan 8 buah tombol, S1 sampai S8.
3. Tambahkan sebuah Vertical Toggle Switch, beri nama Man/Auto.
4. Buat While Loop, tambahkan tombol Stop.
5. Buat Case Structure di dalam While Loop.
6. Buat Enum, isi dengan 9 keadaan berikut ini:
  • Initial condition
  • Conveyor1 ON
  • Filling
  • Rotating1
  • Capping
  • Rotating2
  • Labelling
  • Rotating3
  • Conveyor2 ON
7. Tambahkan Shift Register, hubungkan Enum dengan Shift Register kiri, dan hubungkan Shift Register kiri dengan kanan melalui terminal Case Selector (tanda tanya) Case Structure.
8. Buat agar Case Structure memiliki semua kondisi yang ada di Enum, klik kanan label Case Structure, pilih Add Case for Every Value.
9. Tambahkan icon Select di setiap Case di Case Structure, kecuali pada Case yang terakhir. Di Case yang terakhir, beri input garis data State Initial Condition.
10. Secara berturut-turut, di setiap icon Select di setiap Case, beri kaki tengah input dengan output dari tombol S1 sampai S8. Hubungkan kaki input bawah dengan kaki Case Selector (tanda tanya). Beri kaki input atas icon Select dengan Case berikutnya, dengan cara klik kanan pada kaki, pilih Create Constant, pilih state berikutnya.
11. Setelah Shift Register Enum/State selesai dibuat, berikutnya, tambahkan 6 buah Shift register lagi, kemudian ikuti Tabel State vs Shift Register berikut ini:

Tabel State vs Shift Register


Keterangan Tabel:
  1. Shift register pertama adalah state, yang terdiri dari 9 item, yaitu Initial, Conv1 ON, Filling, Rotating1, Capping, Rotating2, Labelling, Rotating3, dan Conv2 ON.
  2. Shift register kedua berisi data array, yaitu Left, Top dan Value dari objek botol. Value 0 - 15 menghasilkan gambar botol dari kondisi kosong hingga terisi penuh. Value 16 menghasilkan gambar botol diberi tutup. Value 17-24 menghasilkan gambar diberi label. 
  3. Shift register ketiga berisi data warna botol, yaitu merah, hijau, biru, kuning dan ungu.
  4. Shift register keempat berisi data posisi botol untuk pemutaran pertama, kedua dan ketiga, yang setiap pemutaran memerlukan 3 langkah dengan sudut putaran sejauh 30°.
  5. Shift register kelima berisi data penutupan, yang memerlukan 16 langkah hingga selesai.
  6. Shift register keenam berisi data pelabelan, yang memerlukan 17 langkah hingga selesai.
  7. Shift register ketujuh berisi data penghitungan jumlah botol untuk warna merah, hijau, biru, kuning dan ungu.
12. Setelah ketujuh Shift register ditambahkan dan dikawat sesuai Tabel di atas, langkah berikutnya adalah menambahkan output atau indikator di setiap garis data Shift register, yang ditempatkan di luar Case Structure. Berikut ini penambahan output mulai dari Shift register pertama hingga ketujuh:
  1. Tambahkan icon Format Into String pada garis data Shift register pertama, kemudian klik kanan kaki output Format Into String, pilih Create Indicator. Beri nama objek indikator ini "Proses:". Indikator ini akan menampilkan proses atau state apa yang sedang terjadi.
  2. Output Shift register kedua adalah posisi Left dan Top botol, dan juga nilai botol. Di samping itu, agar output Shift register kedua ini juga bisa mengatur muncul tidaknya botol, tarik kotak Property Node ke bawah, dan pilih pilihan Visible. Buat agar objek dapat dimunculkan apabila posisi Top botol kurang dari 90. 
  3. Output Shift register ketiga diperlukan untuk menentukan warna botol. Hubungkan data shift register ini dengan Picture Ring color_lbl, dan juga warna pada objek botol (gunakan Case Structure yang memuat kelima Property Node botol, mulai dari botol merah, kemudian botol hijau, biru, kuning dan ungu), serta untuk menentukan LED mana dari kelima LED (A, B, C, D, atau E) yang menyala.
  4. Hubungkan garis data Shift register keempat dengan Picture Ring piringan. Berhubung Picture Ring piringan hanya memiliki 3 item, gunakan fungsi Quotient & Remainder, dengan angka pembagi 3.
  5. Hubungkan garis data Shift register kelima dengan Picture Ring cap, yang akan memasang tutup pada botol.
  6. Hubungkan garis data Shift register keenam dengan Picture Ring text_lbl, yang akan menambahkan label.
  7. Hubungkan garis data Shift register ketujuh dengan indikator Numeric untuk jumlah botol merah (A), hijau (B), biru (C), kuning (D) dan ungu (E), dan total jumlah botol yang dihasilkan.
13. Berikut ini snippet kode program LabVIEW untuk simulasi pengisian, penutupan dan pelabelan untuk satu persatu botol.

program-1-botol



14. Lebih jelasnya mengenai pembuatan program, silahkan bisa melihat video berikut in:

Video pembuatan simulasi untuk 1 botol

15. Untuk mempermudah rekan-rekan, silahkan mengunduh file program LabVIEW untuk pengisian, penutupan dan pelabelan satu persatu botol di link berikut ini: https://drive.google.com/file/d/15gfOynbsGz2kE09OlftZvSxe4R11VLQf/view?usp=sharing




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


8.3 Penambahan Komunikasi Serial 1


Untuk bisa menghubungkan Arduino di Wokwi dengan Simulasi Pengisian, Penutupan, dan Pelabelan Botol LabVIEW, berikut ini daftar kebutuhannya: 
  1. Arduino bisa mengontrol jalannya proses secara manual dan otomatis.
  2. Arduino menampilkan warna botol dengan bantuan LED RGB.
  3. Arduino bisa menampilkan proses yang sedang terjadi di LCD.
  4. Arduino bisa menampilkan jumlah botol yang sudah diproses, baik jumlah botol untuk masing-masing warna maupun total semua botol yang telah dihasilkan, ditampilkan di LCD.
  5. Arduino bisa mensimulasikan Aktuator yang diperlukan, seperti Motor Konveyor (Relay), Katup saluran (Relay), Alat Pemasang tutup (Relay), Alat Pemberi label (Relay).
Berikut ini langkah-langkah pembuatannya:
1. Berhubung tombol yang diperlukan banyak, maka di Wokwi, digunakan Remote IR. Buka link berikut ini: https://wokwi.com/projects/419374438350154753.
2. Untuk program simulasinya menggunakan software LabVIEW, silahkan mengunduh di link berikut ini: https://drive.google.com/file/d/15gfOynbsGz2kE09OlftZvSxe4R11VLQf/view?usp=sharing
Catatan: untuk cara pembuatan program simulasi ini, silahkan bisa melihat video ini: https://youtu.be/yPMmYhEn5EY?feature=shared
3. Untuk menjawab 5 kebutuhan di atas, mulai dari kebutuhan pertama, kontrol dari Arduino di Wokwi menggunakan remote IR, yang akan mengirimkan huruf ke LabVIEW sesuai ketentuan berikut ini:
  • tombol 1 -> 'a' (alternatif S1)
  • tombol 2 -> 'b' (alternatif S2) 
  • tombol 3 -> 'c' (alternatif S3)
  • tombol 4 -> 'd' (alternatif S4) 
  • tombol 5 -> 'e' (alternatif S5)
  • tombol 6 -> 'f' (alternatif S6) 
  • tombol 7 -> 'g' (alternatif S7)
  • tombol 8 -> 'h' (alternatif S8) 
  • tombol 9 -> 'i' (alternatif manual)
  • tombol 9 -> 'j' (alternatif auto) 
  1. - Untuk menghasilkan hal ini, tambahkan  VISA Configure Serial Port, VISA Bytes at Port, VISA Read, dan VISA Close. 
  2. - Tempatkan VISA Configure Serial Port dan VISA Close di luar While Loop, karena hanya perlu dijalankan sekali, sedangkan VISA Bytes at Port dan VISA Read di dalam While Loop. 
  3. - Tambahkan pilihan Port COM pada VISA Configure Serial Port dengan cara meng-klik kanan kaki VISA Resource Name, dan pilih Create Control.
  4. - Hubungkan semuanya secara berurutan. Agar VISA Read tidak dijalankan terus-menerus, dan hanya dijalankan apabila ada data di port serial, maka tambahkan Case Structure pada VISA Read, dengan terminal Case Selector diberi input dari nilai output Bytes at Port > 0. VISA Read ditempatkan di Case True, sedangkan Case False dikosongkan, hanya perlu meneruskan garis datanya saja.
  5. - Beri input byte count di VISA Read dengan angka 10 (satu huruf hanya memerlukan 1 byte, dengan karakter CR dan LF masing-masing 1 byte, jadi total hanya 3 byte, maka dengan alokasi 10 byte sudah cukup memadai untuk menampung data).
  6. - Klik kanan kaki read buffer, pilih Create, pilih Indicator. Agar data di read buffer bersih dari karakter tidak tercetak, seperti CR dan LF, sisipkan icon trim whitespace.
  7. - Berikutnya, tambahkan fungsi OR untuk semua tombol, dan beri input fungsi OR ini dengan lokal variabel read buffer, yang diberi icon Equal, dan huruf a, b, c, d, e, f, g dan h secara berturut-turut untuk tombol S1, S2, S3, S4, S5, S6, S7 dan S8.
  8. - Berikutnya tambahkan 2 buah lokal variabel vertical toggle switch Man/Auto, buat keduanya menjadi indicator. Beri nilai False untuk Lokal variabel Man/Auto yang pertama, dan beri nilai True untuk Lokal variabel Man/Auto yang kedua.
  9. - Tambahkan masing-masing Case Structure pada kedua lokal variabel tersebut, tempatkan keduanya di Case True. 
  10. - Untuk Case Selector pada Case Structure yang pertama, beri nilai input dari icon Equal antara read buffer dengan huruf i, sedangkan untuk Case Selector pada Case Structure yang kedua, beri nilai input dari icon Equal antara read buffer dengan huruf j.
4. Untuk menjawab kebutuhan kedua, yaitu menampilkan warna botol di LED RGB, diperlukan pengiriman kode warna dari LabVIEW ke Arduino. Untuk itu tambahkan VISA Write, dan buat agar VISA Write ini hanya dijalankan ketika angka acak untuk kode warna dibangkitkan, yaitu di Initial Condition. Tambahkan Case Structure pada VISA Write, hubungkan Case Selector dengan output gerbang OR dari tombol S1. Data yang dikirimkan ke Arduino diawali huruf a, diikuti angka kode warna, diakhiri dengan karakter CR, dan ketiganya digabungkan dengan bantuan Concatenate String. Teruskan garis data untuk Case False.
5. Berikutnya, untuk menampilkan proses yang sedang terjadi di LCD, diperlukan pengiriman nilai tahapan/enum. Untuk itu tambahkan VISA Write lagi, buat agar VISA Write ini hanya dijalankan ketika terjadi perubahan keaadan. Untuk mengetahui terjadinya perubahan keadaan, buat Shift Register enum menjadi bertingkat, dan gunakan fungsi Not Equal. Hubungkan output fungsi Not Equal ini dengan Case Selector pada Case Structure VISA Write kedua. Data yang dikirimkan ke Arduino diawali huruf b, diikuti angka tahapan/enum, diakhiri dengan karakter CR, dan ketiganya digabungkan dengan Concatenate String. Teruskan garis data untuk Case False.
6. Untuk kebutuhan 4 dan 5, keduanya telah dimasukkan ke dalam program di Arduino. Maka langkah berikutnya, jalankan Wokwi. Pastikan kotak pilihan COM muncul. Apabila kotak pilihan COM tidak muncul, tekan stop, kemudian jalankan kembali.

Catatan: Agar bisa terhubung melalui komunikasi Serial antara LabVIEW  dengan Arduino di Wokwi, pastikan Port COM di Aduino berpasangan dengan Port COM yang dipilih di Wokwi. Untuk mengetahui COM yang berpasangan ini, gunakan Device Manager. Apabila port COM tidak muncul di Device Manager, silahkan menginstal Free Virtual Serial Ports di freevirtualserialports.com/

7. Lebih jelasnya mengenai pembuatan program komunikasi serial antara LabVIEW dengan Wokwi ini,  silahkan bisa melihat video berikut ini:

Video simulasi pengisian botol terhubung dengan Arduino di Wokwi

8. Untuk memudahkan rekan-rekan, silahkan mengunduh file program LabVIEW untuk bagian ketiga di link ini: https://drive.google.com/file/d/1vEa6DImtytHLyJm-X8RkXuz2npfRedG5/view?usp=sharing


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

8.4 Penambahan Komunikasi Modbus RTU 1


8.4.1 Modbus RTU dengan library modbus-esp8266

Diinginkan mengganti komunikasi serial dengan protokol Modbus RTU.
Berikut ini langkah-langkahnya:
1. Buka rangkaian berikut ini: https://wokwi.com/projects/419641803619898369
Catatan: Rangkaian tersebut sama dengan yang digunakan untuk komunikasi serial (lihat Sub Bab 8.3) hanya programnya berbeda.
2. Unduh program LabVIEW di Sub Bab 8.3, di link berikut ini: https://drive.google.com/file/d/1vEa6DImtytHLyJm-X8RkXuz2npfRedG5/view?usp=sharing
3. Hapus VISA Configure Serial Port, VISA Bytes at Port, VISA Read, VISA Write dan VISA Close, beserta dengan icon-icon yang terhubung dengannya. Sebagai gantinya, tambahkan Create Master Instance, Read Holding Registers, Write Single Holding Register dan Close, yang ada di kategori Data Communication, di Modbus, di Modbus Master. Tempatkan Create Master Instance dan Close di luar While Loop, menggantikan VISA Configure Serial Port dan VISA Close, sedangkan Read Holding Registers dan 2 buah Write Single Holding Register di dalam While Loop, menggantikan VISA Read dan VISA Write. Hubungkan kelimanya sehingga bekerja secara berurutan.
4. Di Create Master Instance, pilih New Serial Master: Di kaki Visa Resource Name, klik kanan, pilih Create Control. Di kaki Unit ID, klik kanan, Create Constant, isi dengan angka 1, kemudian di kaki Serial Type, klik kanan, pilih Create Constant, pilih RTU.
5. Create Constant pada kaki starting address di Read Holding Register, isi dengan angka 0. Create Constant pada kaki number of holding registers, isi dengan angka 1. Di kaki register values, tambahkan Index Array, dan isi index dengan angka 0, dan klik kanan kaki output Index Array, pilih Create Indicator. Beri nama indikator ini "input". Ganti local variable read buffer dengan local variabel "input" ini. Apabila tipe data local variable read buffer adalah String, maka untuk local variable "input" ini adalah tipe Integer (bilangan bulat).
6. Berikutnya, Create Constant pada kaki address Write Single Holding Register yang pertama, dan isi dengan angka 1. Untuk kaki holding register value, beri garis data shift register color. Agar indeksnya tidak dimulai dari 0, maka sisipkan fungsi increment.
7. Begitu pula untuk Write Single Holding Register yang kedua, Create Constant kaki address, dan isi dengan angka 2. Untuk kaki holding register value, beri garis data shift register enum.
8. Agar Read Holding Register tidak dijalankan terus-menerus, tetapi secara berkala dan sesaat saja, maka tambahkan Case Structure. Beri input Case Selector (?) dengan nilai i (iteration), yang diberi tambahan Quotient & Remainder, dengan angka pembagi 3, dan output sisa hasil bagi diberi tambahan fungsi Equal to 0? Dengan cara ini, Read Holding Register hanya dijalankan setiap 300 milidetik sekali.
9. Berikutnya, tambahkan juga kedua Write Single Holding Register dengan Case Structure, agar hanya dijalankan pada saat tertentu. Untuk Write Single Holding Register pertama, beri input Case Selector (?) dengan garis data shift register color di Case Initial Condition. Sedangkan untuk Write Single Holding Register yang kedua, beri input Case Selector (?) dengan perubahan nilai shift register enum.
10. Berikutnya, untuk setiap Case pada Case Structure Enum, ganti huruf a, b, c, d, e, f, g dan h secara berturut-turut dengan angka 1, 2, 3, 4, 5, 6, 7, dan 8. Begitu pula ganti huruf i dan j dengan angka 9 dan 10 untuk membuat local variable Man/Auto menjadi manual dan auto.
11. Berikut ini kode program snippet hasil langkah no. 1 - 10 di atas:

process-1-modbus-rtu

12. Lebih jelasnya mengenai pembuatan program komunikasi Modbus RTU antara LabVIEW dengan Wokwi ini,  silahkan bisa melihat video berikut ini:

Video simulasi pengisian botol terhubung melalui protokol Modbus RTU

13. Untuk memudahkan rekan-rekan, silahkan mengunduh file program LabVIEW untuk bagian keempat di link ini: https://drive.google.com/file/d/1uT_Td7HGUb3M2dpocrBPcBK-kRLWdgVG/view?usp=sharing



8.4.2 Modbus RTU dengan Outseal Nano





Berikut ini langkah-langkahnya:
Catatan: Bagi rekan-rekan yang ingin tahu cara pembuatan program simulasi LabVIEW di atas, silahkan melihat video berikut ini:https://www.youtube.com/watch?v=csTiS65dr3E

2. Unduh file rangkaian Proteus berikut ini: 

Gambar 4.1 Rangkaian Arduino Nano (sebagai Outseal Nano) di Proteus

3. Diinginkan untuk bisa membuat simulasi dapat dijalankan secara manual dan otomatis dari tombol-tombol di Proteus. Tombol S1 - S8 untuk menjalankan urutan pada proses Manual. Tombol S9 untuk mengubah ke mode Manual. Tombol S10 untuk mengubah ke mode Otomatis (Auto). Diinginkan juga untuk bisa membuat LED, Relay, Motor DC dan Motor Stepper di rangkaian Proteus dapat menampilkan simulasi aktuator di LabVIEW, menampilkan simulasi konveyor1, katup pengisian, pemberian tutup, pemberian label, pemutaran piringan, dan konveyor2. Berikut ini alternatif program ladder diagram di Outseal Studio:

Gambar 4.2 Ladder Diagram Outseal Nano untuk simulasi pengisian botol

Keterangan program:
  1. Baris 0 - 7 membaca tombol S1 sampai S8, dan mengirimkan datanya ke modbus RTU, di lokasi Holding Register indeks ke 0 (di Outseal dialamatkan di I.1).
  2. Baris 8 - 10 membaca data tombol S9 dan S10 (menggunakan kaki Analog, berhubung kaki digital input hanya terbatas sampai 8), dan mengirimkan datanya ke modbus RTU, di lokasi Holding Register indeks ke 0 (di Outseal dialamatkan di I.1).
  3. Baris 11 - 18 untuk membaca data modbus RTU di lokasi Holding Register indeks ke 2 (di Outseal dialamatkan di I.3), dan menerjemahkannya ke dalam alat-alat output LED, Relay, Motor DC, Motor Stepper.

4. Ladder Diagram Outseal Studio di atas dapat diunduh di sini: 

5. Lebih jelasnya mengenai langkah-langkah penggunaan Outseal Nano dan pemrogramannya, untuk terhubung dengan simulasi pengisian botol LabVIEW, rekan-rekan bisa lihat pada video berikut ini:

Video simulasi pengisian botol LabVIEW terhubung Outseal Nano dengan simulasi Proteus




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

8.5 Penambahan Komunikasi Modbus TCP

Di bagian ini, ada 2 alternatif penggunaan software, yang pertama menggunakan simulasi PLC Schneider, dan yang kedua menggunakan software simulasi Wokwi. Berikut ini uraiannya masing-masing:

8.5.1 Modbus TCP dengan simulator PLC Schneider



Berikut ini langkah-langkahnya:
1. Unduh program LabVIEW di Sub Bab 8.4, di link berikut: 
2. Ganti pilihan New Serial Master menjadi New TCP Master, yaitu di icon Create Master Instance. Klik kanan pada kaki address, isi dengan alamat IP localhost. Alamat IP localhost ini bisa diketahui dengan mengetikkan "ipconfig" di command prompt.
3. Diinginkan mengirimkan data jumlah botol merah, jumlah botol hijau, jumlah botol biru, jumlah botol kuning, jumlah botol ungu dan jumlah total botol ke modbus, pada data Holing Register, dengan alamat secara berturut-turut mulai dari 3 sampai 8. 
Catatan: Data input tombol dan saklar ditempatkan di Holding Register di alamat 0, data warna ditempatkan di Holding Register di alamat 1, dan data enum/state ditempatkan di Holding Register, di alamat 2.
4. Agar pengiriman data ke modbus tersebut tidak dijalankan terus-menerus, yaitu hanya dijalankan apabila ada perubahan data, maka tambahkan Case Structure, dan isi Case selector dengan nilai data yang akan dikirimkan, ditambah Feedback Node untuk mengambil nilai sebelumnya, yang keduanya kemudian dibandingkan dengan Not Equal. Output dari Not Equal inilah yang dihubungkan dengan Case Selector. Lebih jelasnya, perhatikan kode snippet berikut ini.

snippet-tcp
Gambar 5.1 Kode snippet LabVIEW untuk Modbus TCP

5. Berikutnya, download dan instal SoMachine atau Machine Expert di link berikut ini: https://www.se.com/us/en/download/document/ESEMACS10_INSTALLER/
6. Apabila menggunakan Machine Expert, silahkan mengatur Properties seperti gambar berikut ini:

Gambar 5.2 Di halaman Properties, karena hanya untuk latihan, pilih Inactive 

7. Di halaman Configuration, ambil tipe PLC TM221CE24R (ambil dari kotak wadah di pojok kanan). Setelah itu tambahkan modul tambahan untuk output analog. Diinginkan ada 8 buah output analog. Berhubung modul analog tipe TM3AQ4/G hanya menyediakan 4 buah output analog, maka gunakan 2 buah modul, susun seperti gambar berikut ini.

Gambar 5.3 Di halaman Properties, karena hanya untuk latihan, pilih Inactive 

8. Berikutnya buka halaman Programming, dan buat program seperti berikut ini:

Gambar 5.4 Ladder Diagram untuk komunikasi dengan Modbus TCP

Keterangan:
  1. Baris 1 - 10, yang berisi kontak %i0.0 sampai %i0.9, akan membuat nilai Holding Register di indeks 0 (%mw0) akan bernilai 1 sampai 10. Nilai 1 akan membuat state berubah dari Initial Condition ke Conveyor1 ON, nilai 2 akan mengubah state dari Conveyor1 ON menjadi Filling Process, dan seterusnya. Nilai 10 akan membuat Saklar berubah dari mode Manual menjadi Auto. Nilai 9 akan mengubah mode Auto menjadi Manual kembali.
  2. Baris 11 - 12 akan membaca nilai Holding Register di indeks 1 dan indeks 2, untuk dikeluarkan di output analog pertama dan kedua di modul tambahan, yaitu di %qw1.0 dan %qw1.1.
  3. Di samping ditampilkan di %qw0.1, nilai Holding Register indeks 2, yang merupakan nilai enum/state, juga ditampilkan di 8 buah output digital dari %q0.0 sampai %q0.7, seperti terlihat pada baris 13 - 20.
  4. Berikutnya, di baris 21 - 26, nilai Holding Register indeks 3 sampai 8, dibaca dan ditampilkan di output analog ketiga sampai kedelapan, yaitu berturut-turut di %qw1.2, %qw1.3, %qw2.0, %qw2.1, %qw2.2, %qw2.3, yang menampilkan jumlah botol merah, hijau, biru, kuning, ungu dan total jumlah semua botol.
9. Setelah program di atas selesai dibuat, langkah berikutnya, atur tipe data output analog, dari yang sebelumnya Not Used, ganti dengan 0 - 10V, dengan nilai maksimum 100, seperti ditunjukkan pada Gambar 8.5 dan 8.6.

Gambar 5.5. Atur tipe data output analog di modul tambahan pertama, dari sebelumnya Not Used, atur menjadi 0 - 10V dengan nilai maksimum 100

Gambar 5.6. Atur tipe data output analog di modul tambahan kedua, dari sebelumnya Not Used, atur menjadi 0 - 10V dengan nilai maksimum 100

10. Berikutnya, atur pula Ethernet (ETH1), isi IP Address dengan IP local host. Jangan lupa untuk mencentang semua opsi Security Parameters.

Gambar 5.7 Atur Ethernet (ETH1) pada alamat IP dan centang semua opsi pada security parameters

11. Berikutnya, di halaman Commissioning, tekan tombol Launch Simulator, tunggu beberapa saat, kemudian tekan tombol Start Controller, maka simulator PLC sudah berjalan. 

Gambar 5.8 Jalankan simulasi PLC dengan membuka halaman Commissioning, klik tombol Launch Simulator, kemudian tekan tombol Start Controller

12. Berikutnya, jalankan program LabVIEW dan lakukan penekanan pada angka 0 sampai 9 di simulator PLC, dan perhatikan perubahannya pada simulasi LabVIEW.
Catatan: di sini program LabVIEW dijalankan sebagai Modbus TCP Master atau sering juga disebut sebagai Client, sedangkan simulator PLC disebut sebagai Modbus TCP Slave atau sering juga disebut sebagai Server. Alamat IP yang diisikan dalam komunikasi Modbus TCP ini adalah alamat IP dari Server, sedangkan alamat IP Client tidak diisikan, hanya saja, alamat IP Client harus memiliki jaringan lokal yang sama (satu kelas) dengan alamat IP Server.

13. Lebih jelasnya mengenai pembuatan program komunikasi Modbus TCP antara LabVIEW dengan simulator PLC ini, silahkan rekan-rekan bisa melihat video berikut ini:

Video simulasi pengisian botol terhubung simulator PLC melalui protokol Modbus TCP

14. Untuk memudahkan rekan-rekan, silahkan mengunduh file program LabVIEW di link berikut: 



8.5.2 Modbus TCP dengan library modbus-esp8266

Modbus TCP memerlukan jaringan lokal. Wokwi sebenarnya menyediakan akses ke jaringan lokal, yaitu menggunakan Private Gateway, hanya saja pemakaiannya tidak gratis, alias berbayar. Agar tetap menggunakan Wokwi yang gratis, maka di sini menggunakan alternatif cara lain, yaitu dengan menambahkan hardware ESP32 atau ESP8266, di mana hardware ESP32 atau ESP8266 ini diprogram untuk menjadi Slave Modbus TCP, dan berkomunikasi dengan Wokwi melalui komunikasi serial. Lebih jelasnya lihat diagram berikut ini:
Gambar 5.9 Agar Wokwi bisa mensimulasikan Modbus TCP, perlu terhubung dengan jaringan lokal. yaitu dengan Private Gateway, hanya saja, fitur ini berbayar

Gambar 5.10 Agar tetap menggunakan Wokwi yang gratis, gunakan hardware ESP32/ESP8266, yang diprogram sebagai Slave Modbus TCP dan berkomunikasi dengan Wokwi melalui komunikasi serial


Berikut ini langkah-langkah untuk mewujudkan diagram Gambar 5.10 di atas:
1. Upload program berikut ini di hardware ESP32 atau ESP8266:


3. Jalankan Wokwi, pastikan kotak dialog pilihan Port COM muncul. 
4. Setelah muncul, pilih Port COM yang digunakan ESP32/ESP8266.
5. Setelah Wokwi bisa berjalan, catat alamat IP yang tampil di Serial Monitor Wokwi (kotak di bagian bawah). Alamat IP ini harus diisikan sebagai alamat Slave di LabVIEW. 
6. Download program LabVIEW di link ini: 
7. Ubah alamat IP dengan alamat IP pada langkah no. 5 di atas. 
8. Jalankan LabVIEW dan Wokwi, dan kontrol simulasi dari Wokwi, dan perhatikan tampilan LCD dan indikator yang lainnya.

Lebih jelasnya mengenai pembuatan program komunikasi Modbus TCP antara LabVIEW dengan Wokwi ini, silahkan rekan-rekan bisa melihat video berikut ini:

Video simulasi pengisian botol melalui protokol Modbus TCP dengan bantuan hardware ESP32




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

8.6 Penambahan Komunikasi MQTT

Berikut ini langkah-langkahnya:
1. Download file project LabVIEW MQTT berikut ini: https://github.com/DAQIO/LVMQTT/archive/refs/heads/master.zip
2. Ekstrak file tersebut, kemudian klik 2 kali file bernama MQTT_Client.lvproj, maka akan muncul jendela Project Explorer MQTT_Client, yang berisi semua fungsi yang diperlukan untuk komunikasi MQTT di LabVIEW.
3. Berikutnya, download file program simulasi LabVIEW di deskripsi video berikut ini: https://www.youtube.com/watch?v=QVquC5f6BcQ
4. Hapus semua icon yang terkait dengan fungsi Modbus TCP, dan gantikan dengan fungsi MQTT_Connect, MQTT_Publish dan MQTT_Disconnect untuk mengirimkan data melalui MQTT dari LabVIEW ke Wokwi, dan untuk menerima data dari Wokwi, tambahkan fungsi MQTT_Connect, MQTT_Subscribe, MQTT_SubAckRead, MQTT_Read_Published_Message dan MQTT_Disconnect. 
5. Berhubung fungsi MQTT_Publish dan MQTT_Read_Published_Message harus dijalankan terus-menerus, maka masukkan kedua fungsi tersebut di dalam While Loop. 
6. Karena MQTT_Read_Published_Message ternyata membuat program menunggu hingga data diterima, maka dilakukan pemisahan While Loop. Buat While Loop yang baru, yang khusus untuk fungsi MQTT_Read_Published_Message. Gunakan Local Variable Stop dari While Loop pertama untuk menghentikan While Loop kedua. Dengan 2 buah While Loop, terlihat kelebihan software LabVIEW,  yang bisa menjalankan kedua While Loop tersebut secara paralel. Tambahkan Local Variable untuk data output dari MQTT_Read_Published_Message. Gunakan data output ini menggantikan Local Variable input dari komunikasi Modbus TCP. 
7. Gunakan topik yang berbeda untuk Subscribe dan Publish. Dalam contoh di sini, digunakan Topik Subscribe: "filling/pub", sedangkan Topik Publish: "filling/sub". Kedua topik ini disesuaikan dengan program di Wokwi. Apabila rekan-rekan mengganti kedua topik ini di LabVIEW, silahkan program di Wokwi disesuaikan juga.  
8. Berikutnya, untuk MQTT_Publish (ada 8 buah MQTT_Publish), gunakan topik yang sama, dengan data yang diberi awalan yan berbeda, mulai dari huruf a hingga huruf h, diberi titik dua untuk isian datanya, yang diberi kurung kurawal buka dan tutup.
9. Buka program Wokwi berikut ini: https://wokwi.com/projects/421096877075283969
10. Jalankan LabVIEW dan Wokwi. Lakukan pengubahan dengan menekan tombol, baik tombol di LabVIEW maupun di Wokwi, dan perhatikan tampilan simulasi LabVIEW dan Wokwi.

11. Lebih jelasnya mengenai pembuatan program komunikasi MQTT antara LabVIEW dengan Wokwi ini, silahkan rekan-rekan bisa melihat video berikut ini:

Video simulasi pengisian botol LabVIEW terkoneksi Wokwi melalui MQTT

12. Untuk memudahkan rekan-rekan, silahkan mengunduh file program LabVIEW di link berikut: https://drive.google.com/file/d/19gya6YqSKAzmmMA1y6hsM_nEtuXQv20b/view?usp=sharing




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

8.7 Pembuatan Simulasi Proses untuk Banyak Botol

Agar memudahkan pemahaman, pembuatan simulasi ini saya bagi menjadi 6 tahapan, dengan tahapan sebagai berikut:
1. Tahap 1: Membuat simulasi banyak botol kosong berjalan.
2. Tahap 2: Membuat simulasi pengisian untuk 1 botol.
3. Tahap 3: Membuat simulasi pengisian untuk 4 botol.
4. Tahap 4: Membuat simulasi pengisian untuk 4 botol dengan 5 jenis warna.
5. Tahap 5: Membuat simulasi alat untuk penutupan dan pemberian label.
6. Tahap 6: Membuat penyelesaian akhir.

Berikut ini uraian masing-masing tahapan:

Tahap 1: Membuat simulasi banyak botol kosong berjalan
Berikut ini langkah-langkah pembuatannya:
1. Download file program LabVIEW untuk membuat gambar simulasi di deskripsi video berikut ini: https://www.youtube.com/watch?v=TTvjVPI69UQ (download file di langkah ke-7).
2. Untuk membuat objek botol bisa muncul dan menghilang, ambil objek Flat Square Button di kategori Classic Boolean di Front Panel.
3. Dengan menggunakan Advance/Customize, ubah tampilan objek Flat Square Button tersebut menjadi gambar botol di satu keadaan, dan di keadaan lain dibuat tidak ada gambar. Dengan cara ini maka ketika Flat Square Button tersebut diberi nilai True, gambar botol muncul, sedangkan ketika diberi nilai False, maka gambar tersebut menghilang.
4. Duplikasi objek botol tersebut sehingga total ada 7 objek gambar botol.
5. Berikutnya tambahkan 3 buah objek OK Button, tempatkan secara berdekatan, dan beri nama S1, S2 dan S3.
6. Buka Block Diagram, buat State Machine dengan While Loop, Case Structure, Shift Register dan Enum. Tempatkan Case Structure di dalam While Loop, sedangkan Enum di luar While Loop. Klik kanan dinding While Loop, pilih Add Shift Register.
7. Isi Enum dengan 4 item, yang terdiri dari Initial-Condition, Conveyor1-ON, Filling-Capping-Labelling, dan Rotating the Disc.
8. Hubungkan Enum di luar While Loop dengan Shift Register (SR1). 
9. Tempatkan icon Button S1 di Case Initial-Condition, tambahkan icon Select di garis data Enum untuk membuat keadaan menjadi Conveyor1-ON ketika S1 bernilai True.
10. Tempatkan icon Button S2 di Case Conveyor1-ON, tambahkan icon Select di garis data Enum untuk membuat keadaan menjadi Filling-Capping-Labelling ketika S2 bernilai True.
11. Tempatkan icon Button S3 di Case Filling-Capping-Labelling, tambahkan icon Select di garis data Enum untuk membuat keadaan menjadi Rotating-the-Disc ketika S3 bernilai True.
12. Di Case Rotating-the-Disc, di garis data Enum isi dengan Initial-Condition agar keadaan kembali ke awal.
13. Agar keadaan yang sedang berlangsung dapat ditampilkan, tambahkan fungsi Format into String pada garis data Enum di luar Case Structure, dan Create Indicator di kaki output resulting string.
14. Berikutnya tambahkan Shift Register (SR2) untuk mengatur posisi botol, isi kondisi awal dengan Array, dengan 7 buah nilai, secara berturut-turut: -364, -312, -260, -208, -156, -104, -52.
15. Di Case Initial Condition, teruskan garis data ini dari terminal Shift Register kiri hingga terminal kanan.
16. Di Case Conveyor1-ON, buat garis data tersebut ditambah 13 apabila tidak ada yang belum mencapai 312.
17. Di Case Filling-Capping-Labelling, ganti data yang nilainya 312 dengan -52 (botol yang posisinya di depan dikembalikan ke posisi awal).
18. Di Case Rotating-the-Disc, teruskan garis data ini dari terminal Shift Register kiri hingga terminal kanan.
19. Agar nilai garis data tersebut dapat diterapkan ke objek botol, klik kanan objek botol, pilih Create>>Property Node>>Position>>Left. Ulangi ini untuk ketujuh botol.
20. Hubungkan Property Node Left ketujuh botol tersebut dengan garis data Array posisi botol. Gunakan fungsi Array to Cluster, diikuti dengan fungsi Unbundle. Jangan lupa untuk mengatur Cluster Size di fungsi Array to Cluster, secara default nilainya adalah 9, ganti dengan 7. Hubungkan output Unbundle ini ke Property Node Left secara berturut-turut, mulai dari botol1 hingga botol7.
21. Agar botol hanya muncul ketika berada di atas konveyor, tarik Property Node Left ke bawah, dan pilih Property Node Visible. Ulangi untuk semua Property Node. 
22. Tambahkan fungsi Greater or Equal to Zero? di kategori Comparison, hubungkan inputnya dengan garis data Array posisi, dan hubungkan outputnya dengan fungsi Array to Cluster (ambil yang baru) dan Unbundle (ambil yang baru). Isi Cluster Size di Array to Cluster sebesar 7. Hubungkan output Unbundle ke Property Node Visible secara berturut-turut, mulai dari botol1 hingga botol7.
23. Tambahkan fungsi Wait(ms) di kategori Timing, dan isi inputnya dengan angka 100.
24. Terakhir, klik kanan terminal Loop Condition While Loop, pilih Create Control, maka akan muncul tombol Stop di Front Panel. Tempatkan di bawah tombol S1, S2 dan S3.
25. Tabel 1 berikut menunjukkan isi garis data setiap Shift Register di setiap Case:

Tabel 1. Isi Shift Register SR1 dan SR2 di setiap Case


26. Jalankan program LabVIEW, dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Seharusnya ketika tombol S1 ditekan, muncul botol1 hingga botol7 berjalan mulai dari ujung konveyor yang kiri hingga berhenti di lekukan piringan. Penekanan tombol S1 berikutnya akan membuat botol yang di depan menghilang, dan semua botol maju dan berhenti ketika botol berikutnya sampai ke lekukan piringan. 
Catatan: apabila ketujuh botol tidak muncul setelah tombol S1 ditekan, tambahkan nilai True pada icon Boolean ketujuh botol di luar While Loop.

Untuk lebih jelas mengenai pembuatan tahap 1 ini silakan melihat video berikut ini:

Video tahap 1



Tahap 2: Membuat simulasi pengisian untuk 1 botol
Berikut ini langkah-langkah pembuatannya:
1. Buat sebuah counter yang akan bertambah 1 nilainya setiap kali tombol S2 ditekan. Counter ini bisa digunakan untuk menghitung berapa banyak botol yang telah diproses. Di samping itu, Counter ini bisa digunakan untuk menandai, proses apa yang akan dilakukan pada botol. Gunakan Shift Register (SR3) untuk menyimpan data counter ini. Tampilkan data counter dengan Create Indicator.
2. Berikutnya tambahkan sebuah counter lagi, gunakan Shift Register (SR4) untuk menyimpan data. Counter kedua ini digunakan untuk membuat botol dan piringan berputar 30 derajat sebanyak 3 kali, setiap kali tombol S3 ditekan. Karena 1 putaran penuh sebanyak 360 derajat, maka diperlukan 12 kali putaran 30 derajat. Untuk itu di Case Initial-Condition, tambahkan fungsi Quotient & Remainder, hubungkan input x dengan garis data Counter2, dan input y dengan angka 12, dan hubungkan output Remainder dengan terminal Shift Register kanan.
3. Di Case Conveyor1-ON, dan Case Flipping-Capping-Labelling, teruskan garis data Counter2 ini ke terminal Shift Register kanan.
4. Di Case Rotating-the-Disc, buat angka Counter2 ini bertambah 1 dan hanya berhenti bertambah ketika batas nilainya telah tercapai. Batas nilainya ini dibuat sedemikian rupa sehingga Counter2 hanya bisa bertambah sebanyak 3 kali, setelah itu berhenti. Jadi ketika tombol S3 ditekan, Counter2 akan bernilai 1,2,3 lalu berhenti. Ketika tombol S3 ditekan yang kedua kalinya, maka Counter2 akan bernilai 4,5,6 lalu berhenti. Berikutnya ketika tombol S3 ditekan yang ketiga kali, Counter2 akan bernilai 7,8,9 lalu berhenti. Ketika tombol S3 ditekan yang keempat kalinya, maka Counter2 akan bernilai 10,11,12 lalu berhenti. Penekanan tombol S3 berikutnya akan membuat Counter2 kembali ke 1,2,3 dan seterusnya.
5. Hubungkan garis data Counter2 di luar Case Structure ini dengan icon objek piringan (disc). Karena objek ini hanya berisi nilai 0,1,2, maka tambahkan fungsi Quotient & Remainder, dengan angka pembagi (kaki input y) sebesar 3.
6. Berikutnya, tambahkan Shift register (SR5) untuk posisi botol yang akan diisi, ditutup dan diberi label. Buat nilai awalnya berupa Array, dengan isi 309, -114, -1. Angka pertama merupakan nilai awal posisi Left, sedangkan angka kedua merupakan nilai awal posisi Top, dan angka ketiga merupakan nilai Value, yang menentukan bentuk botol, mulai dari botol kosong (0), hingga terisi (1-15), ditutup (16) dan diberi label (17-24).
7. Di Case Initial-Condition dan Conveyor1-ON, teruskan garis data dari terminal Shift Register kiri ke kanan.
8. Di Case Filling-Capping-Labelling, buat Case Structure dengan 4 buah Case, sesuai dengan proses yang dikerjakan di piringan, yaitu mulai dari Case 0 untuk Filling, Case 1 untuk Capping, Case 2 untuk Labelling dan Case 3 untuk pengambilan. Hubungkan garis data Counter1 ke Input Case Selector Case Structure (?), dengan tambahan Quotient & Remainder dengan pembagi 4.
9. Di Case Filling-Capping-Labelling, di Case 0, Default, buat posisi Top botol bertambah 6 hingga posisi Top botol mencapai angka 90.
10. Di Case 1, buat nilai Value botol bertambah 1 hingga Value-nya mencapai 15 (botol diisi).
11. Di Case 2, buat nilai Value botol menjadi 16 (botol ditutup).
12. Di Case 3, buat nilai Value botol bertambah 1 hingga Value-nya mencapai 24 (botol diberi label).
13. Di Case Rotating-The-Disc, tempatkan sebuah Array 2D untuk posisi botol pada lekukan piringan seperti gambar berikut:

14. Di Case Rotating-The-Disc, hubungkan output Array2D tersebut ke garis data Shift Register posisi Left botol, yang dihubungkan dengan bantuan Index Array, dengan kaki index mengikuti nilai Counter2 yang bisa menghasilkan nilai 1,2,3, kemudian 4,5,6, kemudian 7,8,9, kemudian 10,11,12, dan kembali berulang (lihat langkah no. 4 di atas).
15. Terakhir, tambahkan Property Node posisi Left botol. Tarik Property Node ke bawah, munculkan Property Node Top, Value dan Visible. Hubungkan garis data Shift Register posisi botol dengan Property Node ini. Untuk Property Node Visible, hubungkan dengan garis data Value, yang diberi tambahan fungsi Greater or Equal to Zero.
16. Tabel 2 dan 3 berikut ini menunjukkan isi garis data Shift Register di Case Structure pertama dan kedua.  

Tabel 2. Isi Shift Register SR1 - SR5 di Case Structure yang pertama

Tabel 3. Isi Shift Register SR5 di Case Structure yang kedua

17. Jalankan program LabVIEW, dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Seharusnya ketika tombol S1 ditekan, muncul botol-botol kosong yang berjalan hingga sampai di lekukan piringan. Ketika tombol S2 ditekan, botol akan diisi hingga penuh. Ketika tombol S3 ditekan, botol akan diputar untuk proses penutupan botol. Ketika tombol S1 ditekan lagi, botol-botol kosong akan berjalan hingga sampai ke lekukan piringan. Ketika tombol S2 ditekan, botol akan ditutup. Ketika tombol S3 ditekan, botol akan diputar untuk proses pemberian label. Ketika tombol S1 ditekan lagi, botol-botol kosong akan berjalan hingga sampai ke lekukan piringan. Ketika tombol S2 ditekan, botol akan diberi label. Ketika tombol S3 ditekan, botol akan diputar untuk dibawa konveyor2. Penekanan tombol S1, S2 dan S3 akan membuat proses di atas kembali berulang.

Untuk lebih jelas mengenai pembuatan tahap 2 ini silakan melihat video berikut ini:

Video tahap 2



Tahap 3: Membuat simulasi pengisian untuk 4 botol
Berikut ini langkah-langkah pembuatannya:
1. Agar bisa menampilkan 4 botol sekaligus di keempat lekukan piringan, tambahkan 3 buah Shift Register (SR6, SR7, SR8). 
2. Duplikasi objek botol warna merah hingga menjadi 4 botol.
3. Hubungkan ketiga Shift Register ini dengan nilai awal Array yang berisi 309, -114, -1.
4. Untuk mempersingkat penjelasan, Tabel 4 dan 5 berikut ini menunjukkan isi garis data Shift Register di Case Structure yang pertama dan kedua:

Tabel 4. Isi Shift Register SR1 - SR8 di Case Structure yang pertama

Tabel 5. Isi Shift Register SR5 - SR8 di Case Structure yang kedua

5. Agar isi data Shift Register SR6 - SR8 bisa diterapkan pada objek botol, munculkan Property Node (Left, Top, Value, Visible) SR6 - SR8 yang sama dengan Property Node SR5.
6. Berikutnya, agar keempat botol yang diproses, bisa muncul satu demi satu, yang dimulai dari proses pengisian, maka tambahkan persyaratan untuk Property Node Visible botol, yaitu untuk botol kedua hanya muncul apabila tombol S2 telah ditekan lebih dari sekali. Botol ketiga hanya muncul apabila tombol S2 telah ditekan lebih dari 2 kali. Botol keempat hanya muncul apabila tombol S3 telah ditekan lebih dari 3 kali.
7. Agar botol bisa menghilang saat dibawa Conveyor2, buat nilai Property Node Value menjadi -1 ketika posisi Top botol lebih dari 90.
8. Jalankan program LabVIEW, dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Seharusnya ketika tombol S1 ditekan, muncul botol-botol kosong yang berjalan hingga sampai di lekukan piringan. Ketika tombol S2 ditekan, botol akan diisi hingga penuh. Ketika tombol S3 ditekan, botol akan diputar untuk proses penutupan botol. Ketika tombol S1 ditekan lagi, botol-botol kosong akan berjalan hingga sampai ke lekukan piringan. Ketika tombol S2 ditekan, akan muncul botol baru yang diisi, sementara botol yang sebelumnya telah terisi, akan ditutup. Ketika tombol S3 ditekan, kedua botol akan diputar. Demikian seterusnya, penekanan tombol S1, S2 dan S3 akan membuat proses di atas kembali berulang, dan tidak hanya 1 botol yang diproses.

Untuk lebih jelas mengenai pembuatan tahap 3 ini silakan melihat video berikut ini:

Video tahap 3



Tahap 4: Membuat simulasi pengisian untuk 4 botol dengan 5 jenis warna
Berikut ini langkah-langkah pembuatannya:
1. Agar bisa membuat simulasi pengisian dengan 5 jenis warna, di Case Conveyor1-ON, tambahkan angka acak dengan jangkauan nilai 0 - 4, yang diisikan ke sebuah Array setiap kali tombol S2 ditekan. Pengisian ke Array tersebut mengikuti nilai Counter1, yang diisi mulai dari indeks pertama hingga indeks ke-3, kemudian kembali ke indeks pertama dan seterusnya (gunakan Quotient & Remainder dengan pembagi 4). Agar data Array ini bisa tersimpan dari satu perulangan ke perulangan berikutnya, tambahkan Shift Register (SR9) dengan nilai awal berupa Array berisi 4 buah angka 0.
2. Duplikasi objek botol warna hijau, biru, kuning dan ungu, hingga masing-masing menjadi 4 botol.
3. Untuk memunculkan variasi warna tersebut pada objek botol, tambahkan Case Structure pada Property Node keempat botol yang diproses. Buat agar Case Structure tersebut memiliki 5 Case, di mana masing-masing Case berisi Property Node botol, dengan warna isi botol berturut-turut: merah, hijau, biru, kuning dan ungu. Hubungkan Case Selector untuk setiap Case Structure tersebut dengan data pada Array 4 elemen, dimulai dari indeks pertama hingga keempat secara berurutan.
4. Jalankan program LabVIEW, dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Proses di Tahap 4 ini sama seperti Tahap 3, hanya di sini, jenis warna botol tidak hanya 1 warna, tetapi bisa 5 warna.

Untuk lebih jelas mengenai pembuatan tahap 4 ini silakan melihat video berikut ini:

Video tahap 4



Tahap 5: Membuat simulasi Conveyor, Penutup botol, dan Pemberi label
Berikut ini langkah-langkah pembuatannya:
1. Di Tahap ke-5 ini, ada 3 hal yang akan dibuat, yaitu:
a. Membuat animasi Conveyor1 dan Conveyor2 seolah-olah berjalan.
b. Membuat simulasi Penutup Botol.
c. Membuat simulasi Pemberi Label.
2. Berikutnya, untuk membuat Conveyor1 seolah-olah berjalan, di Case Conveyor1-ON, tambahkan Quotient & Remainder dengan input x diisi nilai i (iteration) dan input y diisi 2. Output Remainder dihubungkan dengan icon Conveyor1, yang ditempatkan di luar Case Structure di luar While Loop.
3. Buat hal yang sama untuk membuat Conveyor2 seolah-olah berjalan, hanya bedanya, fungsi Quotient & Remainder untuk Conveyor2 ini ditempatkan di Case Flipping-Capping-Labelling, dengan tambahan syarat (disisipi gerbang AND), yaitu ketika Counter1 bernilai lebih dari 3, dan posisi Top botol belum mencapai 90.
4. Untuk mensimulasikan alat penutup botol dan alat pemberi label, tambahkan 2 buah Shift Register (SR10 dan SR11).
5. Untuk mempersingkat penjelasan, Tabel 6 berikut ini menunjukkan isi garis data Shift Register SR10 dan SR11 di Case Structure yang pertama:

Tabel 6. Isi Shift Register SR10 dan SR11 di Case Structure yang pertama
6. Untuk menampilkan warna label yang aktif ketika ada botol yang akan diberi label, tambahkan Index Array di Case Filing-Capping-Labelling, dengan input Array terhubung dengan Array 4 anggota, dan input indeks terhubung dengan Counter1, yang dibuat nilainya berulang mulai dari 0 sampai 3 dengan bantuan fungsi Quotient & Remainder dengan angka pembagi 4. Karena proses pelabelan dimulai setelah tombol S2 ditekan sebanyak 3 kali, maka nilai Counter1 harus dikurangi 3 dulu sebelum dihubungkan dengan input x Quotient & Remainder. Output dari Index Array akan menghasilkan nilai 0 - 4, yang merupakan warna merah, hijau, biru, kuning dan ungu. Untuk menunjukkan kondisi tidak aktif, ditambahkan warna abu-abu, yang memiliki nilai 5.
7. Jalankan program LabVIEW, dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Proses di Tahap 5 ini sama seperti Tahap 4, hanya di sini, alat penutup botol dan alat pemberi label bekerja mengikuti proses yang sedang berlangsung.

Untuk lebih jelas mengenai pembuatan tahap 5 ini silakan melihat video berikut ini:

Video Tahap 5



Tahap 6: Membuat Penyelesaian Akhir
Berikut ini langkah-langkah pembuatannya:
1. Di Tahap penyelesaian Akhir ini, ada 5 hal yang akan dibuat, yaitu:
a. Menambahkan mode manual/otomatis, 
b. Menampilkan jumlah botol yang telah terisi (baik per warna maupun total),
c. Menghidupkan indikator Tangki, Katup dan Sensor Level
2. Untuk menambahkan mode manual/otomatis, ambil Vertical Toggle Switch, beri label Man/Auto. Gabungkan icon Vertical Toggle/Switch dengan icon Button S1, S2 dan S3, dengan menggunakan gerbang OR.
3. Di Case Conveyor1-ON, sisipkan gerbang AND untuk mengakomodasi syarat tambahan, yaitu hanya akan berpindah ke Case berikutnya apabila tombol S2 ditekan atau mode otomatis diaktifkan, dan Conveyor1 sudah berhenti atau OFF.
4. Di Case Filling-Capping-Labelling, sisipkan gerbang AND untuk mengakomodasi syarat tambahan, yaitu hanya akan berpindah ke Case berikutnya apabila tombol S3 ditekan atau mode otomatis diaktifkan, dan proses pengisian atau proses pelabelan sudah selesai. Mengapa proses pengisian? Karena pada saat awal, hanya proses pengisian yang berjalan, sedang proses yang lain belum berjalan. Mengapa proses pelabelan? Karena proses pelabelan merupakan proses yang paling lama dibandingkan proses yang lainnya.
5. Berikutnya, untuk menampilkan jumlah botol yang terisi, tambahkan sebuah Array yang berisi 5 buah angka 0. Gunakan Shift Register (SR12) untuk menyimpan data Array ini. Di Case Conveyor1-ON, buat agar salah satu anggota Array ini dinaikkan 1 angka, yang indeksnya sesuai dengan angka acak. Nilai Counter1 menjadi nilai Total botol yang telah terisi. 
6. Penambahan terakhir adalah menghidupkan indikator Tangki, Katub dan Sensor Level, yang akan aktif hanya ketika terjadi proses Pengisian. Untuk itu Di Case Filling-Capping-Labelling, tarik keluar garis data proses pengisian di Case 0,1,2,3, kemudian hubungkan ke sebuah Case Structure yang mengatur nyala indikator tangki dan katub. Untuk indikator Sensor Level, buat sama dengan indikator Katub, namun dengan tambahan gerbang Not.
7. Jalankan program LabVIEW, pilih mode Manual dan tekan tombol S1, diikuti S2 dan S3 secara berturut-turut. Berikutnya pilih mode Auto, maka seharusnya proses pengisian, penutupan botol dan pelabelan dapat bekerja secara otomatis berurutan, dengan melibatkan lebih dari 1 botol.

Untuk lebih jelas mengenai pembuatan tahap 6 ini silakan melihat video berikut ini:

Video Tahap 6



Tahap Revisi: Perbaikan Penghitungan Jumlah Botol
Pada simulasi Tahap 6 di atas, terlihat bahwa jumlah botol A+B+C+D+E tidak sama dengan TOTAL. Hal ini dikarenakan adanya kesalahan dalam pembulatan dan juga penambahan pada SR9 Array. Berikut penjelasannya:
1. Kesalahan dalam pembulatan.
Sebaiknya menggunakan fungsi Round to -Infinity, karena nilai yang diinginkan hanya 0 sampai 4. Jika menggunakan Round to Nearest, nilai yang keluar bisa sampai 5. Hal ini membuat botol Merah terkadang tidak terhitung.
2. Kesalahan pada SR9 Array.
Anggota dari SR9 Array hanya 4, sedangkan indeks dari Array ini diambil dari nilai Counter1 yang bisa lebih dari 4. Untuk itu perlu dilakukan penambahan Quotient & Remainder dengan pembagi 4 agar nilainya bisa dibatasi dari 0 sampai 3.

Untuk lebih jelas mengenai perbaikan kesalahan penghitungan jumlah botol ini silakan melihat video berikut ini:

Video Perbaikan Kesalahan Penghitungan Jumlah Botol





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


















Tidak ada komentar:

Posting Komentar