2. Simulasi Datalogger

Dalam contoh pembuatan Datalogger dengan HMI Haiwell di halaman sebelumnya, Datalogger tersebut hanya melibatkan 1 device modbus saja. Di halaman ini, akan ditunjukkan bagaimana jika device modbus-nya lebih dari 1. Agar memudahkan pembuatannya, dalam contoh di sini, saya menggunakan simulator Proteus. Anggap bahwa ada 3 buah device modbus, yang masing-masing memiliki sensor sebagai berikut:

  1. Device modbus 1: 
    • a. Sensor cahaya LDR 
    • b. Sensor suhu Thermistor NTC 
    • c. Sensor jarak ultrasonik SRF04 
  2. Device modbus 2:
    • a. Sensor suhu Thermocouple tipe K dengan penguat MAX6675
    • b. Sensor suhu Thermocouple tipe K dengan penguat MAX31855
    • c. Sensor tekanan MPX4115
  3. Device modbus 3:
    • a. Sensor suhu dan kelembaban DHT11
    • b. Sensor suhu dan kelembaban SHT75
    • c. Sensor suhu dan kelembaban TH02
Diinginkan ketiga Device tersebut, semua sensornya dapat ditampilkan di HMI Haiwell, dan di-log datanya dari waktu ke waktu. Untuk membuat hal tersebut, berikut ini langkah-langkah pembuatannya:
  1. Buat program pembacaan sensor di ketiga device.
  2. Buat rangkaian RS-485 untuk ketiga device.
  3. Buat program Modbus Slave untuk ketiga device.
  4. Buat Modbus Poll menampilkan data semua sensor di ketiga device.
  5. Buat HMI Haiwell menampilkan data semua sensor di ketiga device.
  6. Buat HMI Haiwell menampilkan grafik data semua sensor.
  7. Buat datalogger di HMI Haiwell.untuk me-log data semua sensor.
Berikut ini uraian langkah-langkah untuk ke-7 hal di atas:


1. Buat program pembacaan sensor di ketiga device

Device modbus 1:
1. Sensor cahaya LDR
2. Sensor suhu Thermistor NTC
3. Sensor jarak ultrasonik SRF04

Gambar 1. Rangkaian Device 1 dengan sensor cahaya LDR, sensor suhu NTC, sensor jarak SRF04

Keterangan: Kaki AREF dan AVCC pada ATmega328 (Arduino Nano) perlu diberi tegangan 5V agar  bisa  membaca nilai analog di kaki A0 - A5. Gambar rangkaian di atas dapat diunduh di bagian akhir dari materi di halaman ini.

Device modbus 2:
1. Sensor suhu Thermocouple tipe K dengan penguat MAX6675
2. Sensor suhu Thermocouple tipe K dengan penguat MAX31855
3. Sensor tekanan MPX4115

Gambar 2. Rangkaian Device 2 dengan sensor suhu Termokopel Tipe K, dengan penguat MAX6675 dan MAX31855 dan sensor tekanan MPX4115

Keterangan: Sensor suhu Termokopel di Gambar 3 di atas, perlu dihubungkan dengan sensor suhu yang sama pada sambungan CJ (cold junction), dengan tujuan untuk menghilangkan offset nilai karena adanya suhu kamar, yang nilainya antara 24 - 25 °C. Gambar rangkaian di atas dapat diunduh di bagian akhir dari materi di halaman ini.

Device modbus 3: 
1. Sensor suhu dan kelembaban DHT11
2. Sensor suhu dan kelembaban SHT75
3. Sensor suhu dan kelembaban TH02

Gambar 3. Rangkaian Device 3 dengan 3 sensor suhu: DHT11, SHT75 dan TH02 

Keterangan: Gambar rangkaian di atas dapat diunduh di bagian akhir dari materi di halaman ini.

Berikut ini berturut-turut program pembacaan sensor untuk Device1, Device2 dan Device3:

1.1 Program pembacaan ketiga sensor untuk Device1
  1. #include <GyverNTC.h>
  2. #include <NewPing.h>
  3. GyverNTC therm(1, 10000, 3435, 25, 10000);// kaki A1
  4. #define TRG 8
  5. #define ECH 9
  6. #define MAKS 200
  7. NewPing sonar(TRG, ECH, MAKS);
  8. unsigned long skr = 0;
  9. void setup() {
  10.   Serial.begin(9600);
  11.   delay(1000);
  12. }
  13. void loop() {
  14.   if (millis() - skr > 3000) {
  15.     float ldr = analogRead(A0) * 5.0 / 1023.0;
  16.     Serial.print(ldr);
  17.     Serial.print(',');
  18.     Serial.print(therm.getTempAverage());
  19.     Serial.print(',');
  20.     Serial.println(sonar.ping_cm());
  21.     skr = millis();
  22.   }
  23. }

Keterangan: Baris no. 3 di atas menunjukkan bahwa sensor Termistor NTC ditempatkan di kaki A1. Apabila ditempatkan di kaki analog yang lain, ganti angka 1 dengan angka yang sesuai dengan kaki analog yang digunakan. Program di atas memerlukan library GyverNTC dan NewPing. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.

1.2 Program pembacaan ketiga sensor untuk Device2
  1. #include <SPI.h>
  2. #include "GyverMAX6675.h"
  3. #include "Adafruit_MAX31855.h"
  4. #define DT 8
  5. #define CK 9
  6. #define SS 10
  7. #define CLK 11
  8. #define DO 12
  9. #define CS 13
  10. GyverMAX6675<CK, DT, SS> sensor;
  11. Adafruit_MAX31855 thermo(CLK, CS, DO);
  12. int val = 0;
  13. unsigned long skr = 0;
  14. float t = 0;
  15. double c = 0;
  16. void setup() {
  17.   Serial.begin(9600);
  18.   delay(1000);
  19. }
  20. void loop() {
  21.   if (millis() - skr > 1000) {
  22.     if (sensor.readTemp()) t = sensor.getTemp();
  23.     Serial.print(t);
  24.     Serial.print(',');
  25.     c = thermo.readCelsius();
  26.     Serial.print(c);
  27.     Serial.print(',');
  28.     int a = analogRead(A0);
  29.     float p = ((a * .00481 / 5) + .094) / .009;
  30.     Serial.println(p);
  31.     skr = millis();
  32.   }
  33. }
Keterangan: Program di atas memerlukan library SPI, GyverMAX6675, dan Adafruit_MAX31855. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.

1.3 Program pembacaan ketiga sensor untuk Device3
  1. #include "DHT.h"
  2. #include "sht_7x.h"
  3. #include "TH02.h"
  4. #include "Wire.h"
  5. DHT dht(8, DHT11);
  6. SHT_7x sht(9, 10);
  7. TH02 th02(0x40);
  8. int16_t temp, rh;
  9. unsigned long skr = 0;
  10. void setup() {
  11.   Serial.begin(9600);
  12.   sht.init();
  13.   dht.begin();
  14.   Wire.begin();
  15.   Serial.println();
  16. }
  17. void loop() {
  18.   if (millis() - skr > 1000) {
  19.     float t1 = dht.readTemperature();
  20.     float h1 = dht.readHumidity();
  21.     Serial.print("DHT11: ");
  22.     Serial.print(t1);
  23.     Serial.print(',');
  24.     Serial.println(h1);
  25.     Serial.print("SHT75: ");
  26.     float t2 = sht.getTemperature();
  27.     float h2 = sht.getHumidity();
  28.     Serial.print(t2);
  29.     Serial.print(',');
  30.     Serial.println(h2);
  31.     th02.startTempConv();
  32.     delay(50);
  33.     temp = th02.getConversionValue();
  34.     float t3 = th02.getLastRawTemp() / 100.0;
  35.     th02.startRHConv();
  36.     delay(50);
  37.     rh = th02.getConversionValue();
  38.     float h3 = th02.getLastRawRH() / 100.0;
  39.     Serial.print("TH02 : ");
  40.     Serial.print(t3);
  41.     Serial.print(',');
  42.     Serial.println(h3);
  43.     skr = millis();
  44.   }
  45. }
Keterangan: Program di atas memerlukan library DHT, sht_7x, TH02, dan Wire. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.

Pengaturan komponen ATmega328 agar bisa disimulasikan

Untuk menghasilkan simulasi dari kode program di atas, klik 2 kali komponen ATmega328 pada rangkaian di Proteus. Di jendela Edit Component, isi 4 kolom seperti gambar berikut ini:

Gambar 4. Klik 2 kali komponen ATmega328, dan isi Program File, CLKDIV8, CKSEL dan Frequency
  1. Program File       : Direktori file Hex hasil kompilasi program di Arduino IDE
  2. CLKDIV8             : (1) Unprogrammed
  3. CKSEL Fuses     : (0000) Ext. Clock
  4. Clock Frequency : 16MHz
Catatan: Di Arduino IDE, lokasi/direktori file Hex biasanya muncul di kotak output setelah kompilasi selesai (Done Compiling). Apabila direktori file Hex ini tidak muncul di kotak output, buka menu File, pilih Preferences, beri tanda centang pada pilihan Compile untuk "Show verbose output during".

Hasil Simulasi Proteus:

Setelah 4 kolom di jendela Edit Component ATmega328 diisi sesuai Gambar 4 di atas, jalankan Proteus dengan menekan tombol Run, maka Virtual Terminal akan menampilkan jendela dengan tampilan data seperti gambar berikut.

Gambar 5. Serial Monitor menampilkan data sensor secara berturut turut LDR, NTC dan SRF04

Catatan: Apabila saat Proteus dijalankan, jendela Virtual Terminal tidak muncul, atau tidak sengaja menutup, maka untuk menampilkan jendela ini kembali, rekan-rekan dapat membuka menu Debug, dan beri centang pada Virtual Terminal.

Jalankan pula simulasi Proteus untuk rangkaian device modbus 2 di Gambar 2. Jangan lupa mengatur komponen ATmega328, khususnya di 4 kolom, sesuai dengan Gambar 4 di atas.

Gambar 6. Serial Monitor menampilkan data 2 buah sensor suhu Termokopel dengan penguat MAX6675 dan MAX31855, serta sebuah sensor tekanan (MPX4115)   

Jalankan pula simulasi Proteus untuk rangkaian device modbus 3 di Gambar 3. Jangan lupa mengatur komponen ATmega328, khususnya di 4 kolom, sesuai dengan Gambar 4 di atas.

Gambar 7. Serial Monitor menampilkan data suhu dan kelembaban untuk DHT11, SHT75 dan TH02

Setelah simulasi Proteus untuk semua rangkaian di ketiga device dapat menampilkan data sensor, maka langkah berikutnya adalah menggabungkan ketiga rangkaian tersebut menjadi satu rangkaian dengan sambungan RS-485.


2. Buat rangkaian RS-485 untuk ketiga device

Berikut ini rangkaian penggabungan dari ketiga device modbus dengan bantuan sambungan RS-485.

Gambar 8. Sambungan RS485 untuk ketiga device (U1, U2 dan U3)

Keterangan: Gambar rangkaian di atas dapat diunduh di bagian akhir dari materi di halaman ini. 

Pengaturan COMPIM:

Agar komponen COMPIM di Gambar 8 di atas bisa menghubungkan rangkaian di Proteus ini dengan software Modbus Poll dan juga dengan HMI Haiwell, diperlukan pasangan port COM virtual. Apabila rekan-rekan belum memiliki pasangan port COM virtual ini, silahkan menggunakan salah satu dari software virtual serial port ini:

Instal salah satu software, dan jalankan software pembuat pasangan COM tersebut. Apabila pembuatan pasangan COM virtual berhasil, maka seharusnya di Device Manager, akan muncul pasangan COM seperti terlihat pada gambar berikut:

Gambar 9. Pasangan COM terlihat di Device Manager

Catatan: Seperti terlihat pada Gambar 9 di atas, Device Manager menampilkan pasangan COM. Dalam contoh di sini, pasangan COM yang akan digunakan adalah COM2 dan COM4. Port COM2 akan diisikan di HMI Haiwell, sedangkan port COM4 akan diisikan pada COMPIM di rangkaian Proteus ini. Klik 2 kali pada komponen COMPIM, isi Physical port = COM4, Physical dan Virtual Baud Rate = 9600, seperti gambar berikut: 

Gambar 10. Klik 2 kali komponen COMPIM, isi Physical port dengan salah satu pasangan COM, dalam contoh di sini COM4, dan isi Physical dan Virtual Baud Rate = 9600.

Catatan: Nama port COM yang muncul di kolom Physical port COMPIM hanya COM1 - COM4. Untuk port COM yang lebih besar dari COM4, misal COM5, buat nama port COM tersebut dengan cara mengetikkan langsung di kolom Physical port.


3. Buat program Modbus Slave untuk ketiga device

Untuk memudahkan pembuatan program, berikut ini beberapa hal yang akan dibuat:
1. Ketiga device pada Gambar 7 di atas, secara berurutan dari atas ke bawah akan diberi ID Slave 1 untuk device U1, ID Slave 2 untuk device U2, dan ID Slave 3 untuk device U3.
2. Setiap nilai pembacaan sensor ditempatkan di Holding Register, dengan alamat mulai dari indeks 0 untuk sensor pertama, indeks 1 untuk sensor kedua dan seterusnya.
3. Agar setiap nilai pembacaan bisa ditampung di register dengan ukuran 16 bit, maka semua nilai pecahan (float) harus dibulatkan (int), karena tipe data untuk nilai pecahan (float) adalah 32 bit. Agar bisa mempertahankan 1 digit angka di belakang koma, maka semua nilai pembacaan akan dikalikan dengan 10, dan kemudian baru dibulatkan. Nantinya, nilai-nilai tersebut perlu dibagi dengan 10 untuk mendapatkan nilai yang sebenarnya. Catatan: khusus untuk pembacaan pada sensor LDR, karena nilai pembacaannya cukup kecil, maka menggunakan angka pengali 100. 
 
3.1 Berikut ini program untuk device modbus ID Slave 1:
  1. #include "ModbusRTU.h"
  2. #include "GyverNTC.h"
  3. #include "NewPing.h"
  4. GyverNTC therm(1, 10000, 3435, 25, 10000);
  5. ModbusRTU mb;
  6. #define TRG 8
  7. #define ECH 9
  8. #define MAKS 200
  9. NewPing sonar(TRG, ECH, MAKS);
  10. unsigned long skr = 0;
  11. void setup() {
  12.   Serial.begin(9600);
  13.   mb.begin(&Serial);
  14.   mb.setBaudrate(9600);
  15.   mb.slave(1);    //slave ID
  16.   mb.addHreg(0);  //sensor1
  17.   mb.addHreg(1);  //sensor2
  18.   mb.addHreg(2);  //sensor3
  19.   delay(1000);
  20. }
  21. void loop() {
  22.   if (millis() - skr > 1000) {
  23.     float ldr = analogRead(A0) * 5.0 / 1023.0 * 100;
  24.     mb.Hreg(0, int(ldr));
  25.     float ntc = therm.getTempAverage() * 10;
  26.     mb.Hreg(1, int(ntc));
  27.     float srf = sonar.ping_cm() * 10;
  28.     mb.Hreg(2, int(srf));
  29.     skr = millis();
  30.   }
  31.   mb.task();
  32. }
Keterangan: Program 3.1 di atas sama dengan program 1.1, hanya ada tambahan instruksi untuk seting modbus slave, dan semua instruksi tampilan data di Serial Monitor diganti dengan penempatan data ketiga sensor di Holding Register secara berurutan. Program di atas memerlukan tambahan library modbus-esp8266, selain GyverNTC, dan NewPing. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.

3.2 Berikut ini program untuk device modbus ID Slave 2: 
  1. #include "ModbusRTU.h"
  2. #include "SPI.h"
  3. #include "GyverMAX6675.h"
  4. #include "Adafruit_MAX31855.h"
  5. #define DT 8
  6. #define CK 9
  7. #define SS 10
  8. #define CLK 11
  9. #define DO 12
  10. #define CS 13
  11. GyverMAX6675<CK, DT, SS> sensor;
  12. Adafruit_MAX31855 thermo(CLK, CS, DO);
  13. ModbusRTU mb;
  14. float t = 0;
  15. unsigned long skr = 0;
  16. void setup() {
  17.   Serial.begin(9600);
  18.   mb.begin(&Serial);
  19.   mb.setBaudrate(9600);
  20.   mb.slave(2);    //slave ID
  21.   mb.addHreg(0);  //sensor1
  22.   mb.addHreg(1);  //sensor2
  23.   mb.addHreg(2);  //sensor3
  24.   delay(1000);
  25. }
  26. void loop() {
  27.   if (millis() - skr > 1000) {
  28.     if (sensor.readTemp()) t = sensor.getTemp() * 10;
  29.     mb.Hreg(0, int(t));
  30.     float c = thermo.readCelsius() * 10;
  31.     mb.Hreg(1, int(c));
  32.     int a = analogRead(A0);
  33.     float p = ((a * .00481 / 5) + .094) / .009 * 10;
  34.     mb.Hreg(2, int(p));
  35.     skr = millis();
  36.   }
  37.   mb.task();
  38. }

Keterangan: Program 3.2 di atas sama dengan program 1.2, hanya ada tambahan instruksi untuk seting modbus slave, dan semua instruksi tampilan data di Serial Monitor diganti dengan penempatan data ketiga sensor di Holding Register secara berurutan. Program di atas memerlukan tambahan library modbus-esp8266, selain SPI, GyverMAX6675, dan Adafruit_MAX31855. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.

3.3 Berikut ini program untuk device modbus ID Slave 3:
  1. #include "ModbusRTU.h"
  2. #include "DHT.h"
  3. #include "sht_7x.h"
  4. #include "TH02.h"
  5. #include "Wire.h"
  6. DHT dht(8, DHT11);
  7. SHT_7x sht(9, 10);//(sck,data)
  8. TH02 th02(0x40);
  9. ModbusRTU mb;
  10. int16_t temp, rh;
  11. unsigned long skr = 0;
  12. void setup() {
  13.   Serial.begin(9600);
  14.   sht.init();
  15.   dht.begin();
  16.   Wire.begin();
  17.   mb.begin(&Serial);
  18.   mb.setBaudrate(9600);
  19.   mb.slave(3);    //slave ID
  20.   mb.addHreg(0);  //sensor1a
  21.   mb.addHreg(1);  //sensor1b
  22.   mb.addHreg(2);  //sensor2a
  23.   mb.addHreg(3);  //sensor2b
  24.   mb.addHreg(4);  //sensor3a
  25.   mb.addHreg(5);  //sensor3b
  26.   delay(1000);
  27.   Serial.println();
  28. }
  29. void loop() {
  30.   if (millis() - skr > 1000) {
  31.     float t1 = dht.readTemperature() * 10;
  32.     float h1 = dht.readHumidity() * 10;
  33.     mb.Hreg(0, int(t1));
  34.     mb.Hreg(1, int(h1));
  35.     float t2 = sht.getTemperature() * 10;
  36.     float h2 = sht.getHumidity() * 10;
  37.     mb.Hreg(2, int(t2));
  38.     mb.Hreg(3, int(h2));
  39.     th02.startTempConv();
  40.     delay(50);
  41.     temp = th02.getConversionValue();
  42.     float t3 = th02.getLastRawTemp() / 100.0 * 10;
  43.     mb.Hreg(4, int(t3));
  44.     th02.startRHConv();
  45.     delay(50);
  46.     rh = th02.getConversionValue();
  47.     float h3 = th02.getLastRawRH() / 100.0 * 10;
  48.     mb.Hreg(5, int(h3));
  49.     skr = millis();
  50.   }
  51.   mb.task();
  52. }
KeteranganProgram 3.3 di atas sama dengan program 1.3, hanya ada tambahan instruksi untuk seting modbus slave, dan semua instruksi tampilan data di Serial Monitor diganti dengan penempatan data ketiga sensor di Holding Register secara berurutan. Program di atas memerlukan tambahan library modbus-esp8266, selain DHT, sht_7x, TH02, dan Wire. Library dan program di atas dapat diunduh di bagian akhir dari materi di halaman ini.


4. Buat Modbus Poll menampilkan data sensor di ketiga device

Sebelum menggunakan HMI Haiwell untuk menampilkan data semua sensor di ketiga device, langkah yang paling tepat adalah melakukan pengujian menggunakan Modbus Poll, untuk memastikan program modbus slave sudah benar dan datanya dapat dibaca dan ditampilkan di Modbus Poll. 

Mengapa Modbus Poll? Karena Modbus Poll merupakan software modbus yang sangat bagus, yang membuat pembacaan, penulisan, pengujian, dan semua hal yang terkait dengan penerapan protokol Modbus, menjadi mudah dan sederhana, khususnya dalam perannya sebagai Modbus Master. Rekan-rekan dapat mengunduh software Modbus Poll ini di link ini:

Berikut ini langkah-langkah untuk menampilkan data semua sensor di Modbus Poll:

4.1 Buka software Modbus Poll. Klik pada pilihan New di menu File sebanyak 2 kali, maka akan muncul 2 buah kotak tambahan, di samping kotak yang sudah ada (jadi total ada 3 kotak). Kotak-kotak ini berisi tabel 2 kolom, seperti terlihat pada gambar berikut.

Gambar 11. Klik New pada menu File untuk menambahkan kotak Tabel yang baru

4.2 Atur ketiga kotak berisi Tabel tersebut secara berturut-turut mengikuti gambar berikut. Mulai dari kotak Tabel pertama, klik kotak tersebut, kemudian pilih menu Setup, klik pada Read/Write Definition. Di jendela Read/Write Definition, isi Slave ID = 1 dan isi Quantity = 3. Pastikan pilihan Function pada Read Holding Register (kode fungsi = 3). Klik OK.

Gambar 12. Klik kotak Tabel pertama, klik Read/Write Definition, isi Slave ID=1, Quantity=3

4.3 Berikutnya, klik pada kotak Tabel kedua, pilih menu Setup, klik pada Read/Write Definition. Di jendela Read/Write Definition, isi Slave ID = 2 dan isi Quantity = 3. Pastikan pilihan Function pada Read Holding Register (kode fungsi = 3)Klik OK.

Gambar 13. Klik kotak Tabel kedua, klik Read/Write Definition, isi Slave ID=2, Quantity=3

4.4 Berikutnya, klik pada kotak Tabel ketiga, pilih menu Setup, klik pada Read/Write Definition. Di jendela Read/Write Definition, isi Slave ID = 3 dan isi Quantity = 6. Pastikan pilihan Function pada Read Holding Register (kode fungsi = 3). Klik OK.

Gambar 14. Klik kotak Tabel ketiga, klik Read/Write Definition, isi Slave ID=3, Quantity=6

4.5 Setelah kotak Tabel pertama, kedua dan ketiga diatur dengan alamat yang sama dengan alamat data sensor di Slave, yaitu di Holding Register, maka langkah berikutnya, hubungkan Modbus Poll ini dengan rangkaian Modbus Slave di Proteus. Pilih menu Connection, klik Connect. Di jendela Connection Setup, pilih Connection = Serial Port, pilih Serial Settings = pasangan COM (dalam contoh di sini menggunakan COM2, yang berpasangan dengan COM4 di COMPIM), Baud = 9600, 8 bit Data, None Parity, 1 Stop Bit. Klik OK. 

Gambar 15. Untuk menghubungkan Modbus Poll dengan rangkaian 3 device modbus Slave di Proteus, pilih Connect, pilih Connection Serial Port, pilih port COM yang berpasangan dengan COM di COMPIM, pilih 9600 baud, 8 bit data, none parity, 1 stop bit, klik OK  

4.6 Jalankan rangkaian RS485 Proteus Gambar 10 di atas. Apabila tidak ada error, di kotak Tabel pertama, mulai dari baris dengan nomor indeks 0 sampai 2, akan menampilkan data sensor LDR, NTC dan SRF04. Begitu pula di kotak Tabel kedua, mulai dari baris dengan nomor indeks 0 sampai 2, akan menampilkan data sensor suhu Termokopel dengan penguat MAX6675, diikuti sensor suhu dengan penguat MAX31855 dan kemudian sensor tekanan MPX4115. Begitu pula di kotak Tabel ketiga, mulai dari baris dengan nomor indeks 0 sampai 5, akan menampilkan data sensor suhu dan kelembaban DHT11, SHT75 dan TH02. Gambar berikut menunjukkan tampilan data dari 9 sensor pada ketiga kotak Tabel di Modbus Poll, beserta dengan rangkaian device dan sensornya di Proteus.

Gambar 16. Modbus Poll menampilkan data semua sensor di ketiga kotak Tabelnya (satu device satu kotak Tabel: U1 -> Mbpoll1, U2 -> Mbpoll2, U3 -> Mbpoll3) 


5. Buat HMI Haiwell menampilkan data sensor di ketiga device

Setelah Modbus Poll bisa membaca sekaligus menampilkan data sensor di ketiga device modbus Slave, maka bisa dipastikan, bahwa HMI Haiwell juga akan bisa menampilkan data ke-9 sensor tersebut, karena HMI Haiwell menerapkan protokol komunikasi modbus yang sama dengan Modbus Poll.

Berikut ini langkah-langkah yang digunakan untuk menampilkan data ke-9 sensor di HMI Haiwell:

1. Buka Haiwell Cloud Scada Develop. Pada jendela yang muncul, klik Create a new project. Di jendela New Project, beri nama projek, contoh "Datalogger 9 sensor", kemudian pilih salah satu jenis HMI. Dalam contoh di sini, dipilih Haiwell HMI B7H, yang memiliki ukuran resolusi layar 1024x600.
 
Gambar 17. Buka software Haiwell Cloud Scada Develop, klik Create a new project, beri nama projek dan pilih jenis HMI

2. Di halaman Project profile, klik 2 kali tombol + di bawah Device. Di jendela Add device, pilih Device Interface = Serial (COM), Choose Device = Common, Modbus Master (RTU/ASCII), Device Properties: COM port = COM2, Device station number = 1, Communication Type = RS-485, Protocol = Modbus, Baud rate = 9600, Data bits = 8, Parity check = None, Stop bit = 1, Flow control = None. Kemudian klik OK.

Gambar 18. Klik 2 kali tombol + Device, pilih Common, pilih Modbus Master(RTU/ASCII), isi COM port = COM2, Device station number = 1, Communication Type = RS-485, Protocol = Modbus, Baud rate = 9600, Data bits = 8, Parity check = None, Stop bit = 1 

3. Di halaman Project profile, di bawah Device, terlihat nama device modbus yang baru, yaitu Modbus_1. Muncul pertanyaan apakah akan membuat variabel pada device tersebut, pilih Yes.

Gambar 19. Pilih Yes untuk membuat variabel pada device Modbus_1

4. Di halaman variabel Modbus_1, klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06). Kemudian klik tombol Save and Continue.

Gambar 20. Klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06), klik tombol Save and Continue

5. Klik tombol OK pada jendela Prompt, tekan kembali tombol Save and Continue, dan ulangi sebanyak 2 kali, hingga muncul 3 buah variabel: 4X0, 4X1 dan 4X2.

Gambar 21. Tekan tombol Save and Continue hingga muncul 3 variabel: 4X0, 4X1, 4X2 

6. Berikutnya, untuk menambahkan device modbus kedua, klik 2 kali pada nama Serial port, di bawah Device, di kotak Project browser. Pada halaman Device manager, klik tombol New. Di jendela Add device, pilih Choose Device = Common, Modbus Master (RTU/ASCII), Device Properties: COM port = COM2, Device station number = 2, Communication Type = RS-485, Protocol = Modbus, Baud rate = 9600, Data bits = 8, Parity check = None, Stop bit = 1, Flow control = None. Kemudian klik OK.

Gambar 22. Di jendela Add device, semua isian sama dengan device Modbus_1, kecuali hanya di isian Device station number, yang semula berisi 1, sekarang dibuat menjadi 2

7. Terlihat nama device modbus yang baru: Modbus_2. Muncul pertanyaan apakah akan membuat variabel pada device tersebut, pilih Yes.

Gambar 23. Pilih Yes untuk membuat variabel pada device Modbus_2

8. Di halaman variabel Modbus_2, klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06). Kemudian klik tombol Save and Continue. Klik tombol OK pada jendela Prompt, tekan kembali tombol Save and Continue, dan ulangi sebanyak 2 kali, hingga muncul 3 buah variabel: 4X0, 4X1 dan 4X2.

Gambar 24. Klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06), klik tombol Save and Continue, dan klik OK di jendela Prompt, ulangi sebanyak 2 kali, hingga muncul 3 buah variabel: 4X0, 4X1 dan 4X2

9. Berikutnya, untuk menambahkan device modbus ketiga, klik 2 kali pada nama Serial port, di bawah Device, di kotak Project browser. Pada halaman Device manager, klik tombol New. Di jendela Add device, pilih Choose Device = Common, Modbus Master (RTU/ASCII), Device Properties: COM port = COM2, Device station number = 3, Communication Type = RS-485, Protocol = Modbus, Baud rate = 9600, Data bits = 8, Parity check = None, Stop bit = 1, Flow control = None. Kemudian klik OK.

Gambar 25. Di jendela Add device, semua isian sama dengan device Modbus_1, kecuali hanya di isian Device station number, yang semula berisi 1, sekarang dibuat menjadi 3

10. Terlihat nama device modbus yang baru: Modbus_3. Muncul pertanyaan apakah akan membuat variabel pada device tersebut, pilih Yes.

Gambar 26. Pilih Yes untuk membuat variabel pada device Modbus_3

11. Di halaman variabel Modbus_3, klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06). Kemudian klik tombol Save and Continue. Klik tombol OK pada jendela Prompt, tekan kembali tombol Save and Continue, dan ulangi sebanyak 5 kali, hingga muncul 6 buah variabel: 4X0, 4X1, 4X2, 4X3, 4X4, dan 4X5.

Gambar 27. Klik tombol Add, pilih Register type = 4X (Analog output, Function code 03 06), klik tombol Save and Continue, dan klik OK di jendela Prompt, ulangi sebanyak 5 kali, hingga muncul 6 buah variabel: 4X0, 4X1, 4X2, 4X3, 4X4, dan 4X5. 

12. Setelah membuat ("add") 3 device modbus, beserta dengan variabel-variabelnya, maka sebelum menampilkan semua data variabel tersebut ke Display HMI, kita bisa melihat dulu, apakah variabel yang kita buat itu bisa menampilkan data. Caranya adalah dengan meng-klik 2 kali pada External variables di bawah Variable, di kotak Project Browser. Di halaman Variable manager, klik tombol Start variable monitoring.   

Gambar 28. Buka halaman Variable manager dengan meng-klik 2 kali External variables, kemudian tekan tombol Start variable monitoring

13. Setelah tombol Start variable monitoring ditekan, jalankan Proteus. Apabila semua variabel di ketiga device, di halaman Variable Manager, tepatnya di kolom Project variables, muncul nilai seperti gambar berikut, maka bisa dipastikan bahwa komunikasi modbus telah berjalan dengan baik. Tekan tombol Stop variable monitoring untuk menghentikan monitoring.

Gambar 29. Saat tombol Start variable monitoring ditekan, dan rangkaian di Proteus dijalankan, apabila muncul nilai di setiap variabel yang telah dibuat, berarti komunikasi modbus berhasil

14. Setelah semua variabel yang dibuat bisa menampilkan nilai data, maka langkah berikutnya adalah menampilkan nilai tersebut di Display HMI. Untuk itu klik 2 kali pada 1:Main_Display, di bawah Display di kotak Project browser. Di halaman 1:Main_display, tempatkan objek Numeric input/display, yang diambil dari kategori Functional components di Graphics library. Kemudian klik 2 kali objek Numeric input/display tersebut, dan klik pada tombol titik 3x. Di jendela Variable selector, klik pada External variables, pilih Modbus_1, 4X0. Klik OK.

Gambar 30. Tempatkan objek Numeric input/display, dan isi variabelnya dengan Modbus_1, 4X0 

15. Ketika variabel External Modbus_1, dengan nama 4X0 dipilih, maka akan muncul nama Modbus_1.4X0 di kolom Read variable di jendela Numeric input/display. Klik OK untuk menutup jendela ini.

Gambar 31. Muncul nama Modbus_1.4X0 di kolom Read variable

16. Jalankan rangkaian di Proteus, dan tekan tombol Online simulation. Klik OK pada jendela CollectionEdit yang muncul. Tunggu hingga jendela Haiwell Cloud Scada Runtime muncul.  

Gambar 32. Jalankan Proteus, tekan tombol Online Simulation

17. Ketika jendela Haiwell Cloud Scada Runtime muncul, tampak objek Numeric input/display menampilkan data angka. Karena variabel yang dibaca adalah sensor pertama di device pertama, maka seharusnya data tersebut sama dengan nilai data sensor LDR. Perhatikan tegangan pada Voltmeter di LDR, ternyata bila nilainya dikali 100, akan sama dengan nilai pada objek Numeric input/display. Hal ini sebenarnya telah dituliskan di atas, khusus untuk sensor LDR, nilai data dikali dengan 100, agar bisa mempertahankan nilai 2 digit angka di belakang koma, ketika dibulatkan. 

Gambar 33. Angka yang ditampilkan di objek Numeric input/display nilainya sama dengan tegangan output sensor LDR di Voltmeter dikali 100

18. Setelah data sensor pertama di device modbus pertama dapat ditampilkan di Display HMI, berikutnya, tambahkan objek Numeric input/display lagi untuk menampilkan data sensor yang lain. Tambahkan sebanyak 11 objek, dan isi satu persatu di kolom Read variables, secara berturut-turut: Modbus_1.4X1, Modbus_1.4X2, Modbus_2.4X0, Modbus_2.4X1, Modbus_2.4X2, Modbus_3.4X0, Modbus_3.4X1, Modbus_3.4X2, Modbus_3.4X3, Modbus_3.4X4, dan Modbus_3.4X5.

Gambar 34. Tambahkan 11 objek Numeric input/display, isi di kolom Read variable nama-nama variabel seperti dituliskan di atas (bisa diketik langsung, atau dengan memilih dari daftar variabel)

19. Untuk memperjelas isi variabel, tambahkan label nama sensor (objek Text) di setiap kotak objek Numeric input/display seperti gambar berikut.

Gambar 35. Beri label di setiap kotak objek Numeric input/display

20. Jalankan kembali Proteus, dan tekan tombol Online simulation. Lakukan perubahan nilai sensor di rangkaian, dan bandingkan nilai data yang ditampilkan di Display HMI Haiwell dengan nilai sensornya. Tampak bahwa semua nilai data yang ditampilkan besarnya 10 kali nilai sensornya, kecuali untuk nilai data yang pertama (LDR), yang nilainya 100 kali nilai sensornya.

Gambar 36.a Jalankan Proteus dan Online simulation, dan bandingkan nilai data yang ditampilkan di Display HMI dengan nilai sensornya di rangkaian Proteus

Gambar 36.b Semua nilai data di Display HMI bernilai 10 kali nilai sensornya, kecuali untuk data di objek pertama, yang nilainya 100 kali nilai sensornya 

21. Berikutnya, agar tampilan data di Display HMI bisa menampilkan angka pecahan yang sama seperti nilai sensor di Proteus, atur nilai Integer digits (angka di depan koma) dan Decimal digits (angka di belakang koma) pada objek Numeric input/display sesuai dengan Tabel 1 berikut:

    Tabel 1. Pengaturan Integer dan Decimal digits

No.

Label objek

Integer digits

Decimal digits

1.

LDR

3

2

2.

NTC

4

1

3.

SRF04

4

1

4.

MAX6675

4

1

5.

MAX31855

4

1

6.

MPX4115

4

1

7.

DHT11.t

4

1

8.

DHT11.h

4

1

9.

SHT75.t

4

1

10.

SHT75.h

4

1

11.

TH02.t

4

1

12.

TH02.h

4

1


Gambar 37. Integer digits dan Decimal digits diatur mengikuti tabel

21. Setelah nilai Integer Digits dan Decimal Digits diatur mengikuti Tabel 1 di atas, jalankan kembali Proteus, dan tekan tombol Online simulation. Lakukan perubahan nilai sensor di rangkaian, dan bandingkan nilai data yang ditampilkan di Display HMI Haiwell dengan nilai sensornya. Tampak bahwa nilai yang ditampilkan di Display HMI sudah sama dengan (mendekati) nilai sensor di Proteus.

Gambar 38.a Nilai sensor di Proteus sudah ditampilkan di Display HMI dengan lebih baik

Gambar 38.b Nilai sensor di Proteus sudah ditampilkan di Display HMI dengan lebih baik

22. Sampai di sini langkah-langkah pembuatan tampilan data sensor di HMI Haiwell selesai.


6. Buat HMI Haiwell menampilkan grafik data sensor.

Setelah data sensor dapat ditampilkan di HMI Haiwell dalam bentuk tampilan angka, berikutnya, diinginkan data sensor tersebut ditampilkan dalam bentuk grafik. 

Berikut ini langkah-langkah pembuatannya:
1. Untuk membuat tampilan grafik, gunakan objek Real Time Trend, yang terdapat di Graphics Library, di kategori Advanced controls. Tempatkan objek Real Time Trend di halaman Display, perlebar ukurannya sehingga memenuhi halaman, seperti gambar berikut:

Gambar 39. Menempatkan objek Real time trend dari kategori Advanced controls untuk membuat grafik

Catatan:
Agar semua objek Numeric input/display (ada 12 objek) bisa ditempatkan dalam 1 baris, maka ukuran kotaknya perlu diperkecil, dan isi datanya juga perlu diubah, dari sebelumnya  5 digit angka, saya ubah menjadi 4 digit saja. Untuk memperlihatkan keseluruhan layar, prosentase (zoom) tampilan bisa diatur dari 100% menjadi 75%.

2. Berikutnya, sebelum menambahkan data variabel ke dalam grafik, berhubung grafik akan menampilkan nilai variabel yang sebenarnya, maka semua data variabel perlu diubah ke nilai yang sebenarnya. Semua data variabel perlu dibagi dengan 10, kecuali untuk variabel sensor LDR, harus dibagi dengan 100. Untuk menampung hasil pembagian tersebut, kita perlu menambahkan variabel internal sebanyak jumlah variabel yang akan ditampilkan di grafik, yaitu sebanyak 12 variabel. Untuk itu, klik kanan pada InternalVariable di bawah Variable, di kotak Project Browser, kemudian klik pada tulisan Add Internal variable group.

Gambar 40. Klik kanan InternalVariable, klik pada Add Internal variable group 

3. Secara default, nama group variable = InternalVariable_1. Klik OK.

Gambar 41. Klik OK pada jendela Property Setting yang muncul

4. Muncul tulisan InternalVariable_1 di kotak Project browser. Klik 2 kali tulisan tersebut. Di halaman InternalVariable_1, klik tombol Add, pilih Register type = W, pilih Data type = Float, dan klik tombol Save and Continue.

Gambar 42. Klik Add, pilih Register type = W, Data type = Float, dan klik tombol Save and Continue

5. Buat sebanyak 12 buah variabel internal, dengan cara meng-klik tombol Save and Continue sebanyak 11 kali lagi, dan klik OK setiap kali jendela Prompt muncul.

Gambar 43. Klik OK pada jendela yang muncul, tekan kembali tombol Save and Continue, ulangi sebanyak 11 kali hingga muncul sebanyak 12 variabel internal pada daftar

6. Setelah 12 buah variabel internal berhasil ditambahkan, langkah berikutnya adalah mengisi variabel tersebut dengan hasil bagi variabel eksternal (sensor) dengan angka tertentu, yang dijalankan secara berkala (perdetik). Untuk membuat hal ini, klik 2 kali pada Start execution event, di bawah Event, di kotak Project browser. Di halaman Event manager, klik tombol New. Di jendela Event selection, pilih Event execution = Only server screen. Kemudian klik tombol titik 3x hingga muncul jendela Task selector.

Gambar 44. Klik 2 kali Start execution event, klik New, pilih Only server screen, klik tombol titik 3x

7. Di jendela Task selector, salin dan tempelkan kode program berikut ini. Setelah ditempelkan, klik tombol Compile diikuti klik tombol Test. Apabila muncul tulisan Passed the syntax checking, maka kode program sudah bisa dijalankan. Klik OK untuk menutup jendela Task selector.

$InternalVariable_1.Variable1=$Modbus_1.4X0/100;
$InternalVariable_1.Variable2=$Modbus_1.4X1/10;
$InternalVariable_1.Variable3=$Modbus_1.4X2/10;
$InternalVariable_1.Variable4=$Modbus_2.4X0/10;
$InternalVariable_1.Variable5=$Modbus_2.4X1/10;
$InternalVariable_1.Variable6=$Modbus_2.4X2/10;
$InternalVariable_1.Variable7=$Modbus_3.4X0/10;
$InternalVariable_1.Variable8=$Modbus_3.4X1/10;
$InternalVariable_1.Variable9=$Modbus_3.4X2/10;
$InternalVariable_1.Variable10=$Modbus_3.4X3/10;
$InternalVariable_1.Variable11=$Modbus_3.4X4/10;
$InternalVariable_1.Variable12=$Modbus_3.4X5/10;

Gambar 45. Tempelkan kode program, tekan tombol Compile dan kemudian tombol Test

8. Setelah jendela Task Selector ditutup, muncul nama Event_1 di kolom Event name. Agar event ini bisa berjalan secara berkala perdetik, pilih Execution mode = Execution interval, dengan Interval diisi 1000 milisecond. Klik OK untuk menutup jendela Event selection.

Gambar 46. Atur Execution mode = Execution interval, dan Interval = 1000 milisecond

9. Berikutnya, buka kembali tampilan 1:Main_display. Di halaman display, klik 2 kali pada objek Real time trend, hingga muncul jendela Real time trend. Isi Trend title = Grafik Sensor. Klik tombol CollectionEdit. Di jendela CollectionEdit, klik tombol Add sebanyak 12 kali hingga muncul 12 item. Kemudian isi setiap Item dengan variabel internal, dan beri warna yang berbeda, seperti gambar berikut.

Gambar 47. Buat item di CollectionEdit sebanyak 12 dan isi dengan variabel internal 1 - 12

10. Klik OK untuk menutup jendela ColectionEdit, dan jendela Real time trend. Apabila tidak ada error, akan terlihat grafik sinus sebanyak 12 garis di objek Real time trend. 

Gambar 48. Muncul grafik sinus di objek Real time trend sebanyak 12 garis

11. Berhubung beberapa nilai sensor bisa lebih dari 100, maka ubah nilai Y maksimum dari 100 menjadi 120. Untuk mengubahnya, klik 2 kali objek Real time trend, pilih NumColor. Ganti angka 100 di kolom Maximum value menjadi 120.

Gambar 49. Klik 2 kali objek Real time trend, pilih NumColor, ganti angka di Maximum value

12. Berikutnya, agar tampilan grafik lebih jelas dan mudah dipahami, ganti nama variabel internal dengan nama sensornya. Untuk itu klik 2 kali pada tulisan InternalVariable_1. Di halaman InternalVariable_1, ubah secara berturut-turut nama Variable menjadi LDR, NTC, SRF, MAX6, MAX3, MPX, DHTt, DHTh, SHTt, SHTh, THt, dan THh, seperti ditunjukkan pada gambar berikut.

Gambar 50. Ubah nama variabel internal dengan nama sensor agar tampilan grafik lebih jelas

13. Setelah pengubahan nama selesai, klik 2 kali pada display HMI (1:Main_display). Terlihat label nama variabel di bawah grafik telah berubah, dari Variable1 - 12 menjadi nama-nama sensor. 

Gambar 51. Nama variabel di bawah grafik telah berubah menjadi nama-nama sensor

14. Jalankan rangkaian Proteus dan tekan tombol Online simulation. Lakukan pengubahan nilai sensor di rangkaian Proteus, dan perhatikan perubahannya pada grafik.

Gambar 52. Tampilan grafik data nilai sensor dan waktu

25. Sampai di sini langkah-langkah pembuatan tampilan grafik sensor di HMI Haiwell selesai.


7. Buat Datalogger HMI Haiwell 


Langkah-langkah pembuatan datalogger di sini sama seperti pembuatan datalogger di halaman sebelumnya (lihat: Datalogger), yaitu menggunakan objek Historical data report table. Untuk bisa menggunakan objek Historical data report table ini, ada 2 langkah yang perlu dilakukan:
a. Menyiapkan halaman Display yang baru untuk penempatan objek Historical data report table.
b. Membuat Data group untuk data yang akan ditampilkan di objek Historical data report table

7.1 Menyiapkan halaman Display yang baru

Berikut langkah-langkahnya:
1. Klik kanan pada Display di Project Browser, pilih Add Display. Klik OK pada jendela Property Setting yang muncul. 

Gambar 53. Klik kanan Display, klik Add Display, klik OK pada jendela Property Setting yang muncul

2. Buat tombol untuk bisa berpindah dari halaman Display pertama ke halaman Display kedua. Gunakan objek Picture operation button (berwarna hijau) di Graphics library, di kategori Functional components. Tempatkan objek ini di pojok kanan bawah di halaman Display pertama. Klik 2 kali pada objek Picture operation button. Di jendela yang muncul, di kolom function, pilih Jump to the next display. 

Gambar 54. Tempatkan objek Picture operation button, klik 2 kali, pilih function = Jump to the next display 

3. Ubah bentuk objek Picture operation button, dari bentuk kotak menjadi tanda panah ke kanan. Klik pada Tab Shape, tekan tombol Shape untuk membuka Shape library. Di jendela Shape library, pilih Default vector library, pilih Sign, pilih gambar tanda panah ke kanan. Klik tombol Select, maka objek Picture Button menjadi tanda panah ke kanan.

Gambar 55. Ubah bentuk kotak menjadi tanda panah ke kanan

4. Berikutnya, buat hal yang sama di halaman Display kedua. Copy objek tanda panah ke kanan tersebut dengan menekan tombol Ctrl+V, klik 2 kali halaman Display kedua, tekan tombol Ctrl+V untuk menempelkan objek di halaman Display kedua. Tempatkan di pojok kanan bawah. Klik 2 kali objek di halaman Display kedua ini. Di jendela yang muncul, pilih function = Jump to previous display. 

Gambar 56. Tempelkan objek yang sama di halaman Display kedua, buat function = Jump to previous display

5. Berikutnya klik pada Tab Shape, tekan tombol Shape untuk membuka Shape library. Di jendela Shape library, pilih Default vector library, pilih Sign, pilih gambar tanda panah ke kiri. Klik Select.

Gambar 57. Ubah bentuk tanda panah ke kanan menjadi tanda panah ke kiri

8. Maka tombol berpindah halaman, baik dari Display1 ke Display2 (tombol panah ke kanan), maupun dari Display2 ke Display1 (tombol panah ke kiri) sudah selesai dibuat.

Gambar 58. Tombol panah ke kanan untuk berpindah ke Display2, tombol panah ke kiri untuk berpindah ke Display1


7.2 Membuat Data group & Datalogger

Berikut langkah-langkahnya:
1. Objek Historical data report table hanya akan menampilkan variabel-variabel yang dimasukkan di Data group. Untuk itu klik 2 kali pada Data group. Di halaman Data group, klik tombol Add data group. Di jendela Data Group, isi Group Name = tabel. Kemudian pilih Storage mode = Local storage. Di Record mode, secara default mode penyimpanannya adalah secara berkala setiap 10 detik. Gunakan default mode ini. Berikutnya, karena ada 12 variabel yang akan disimpan, atur Channel count = 12. Tekan tombol Apply. Kemudian di kolom Channel Variable, mulai dari baris pertama hingga baris ke-12, klik tombol titik 3x, dan isi dengan variabel internal satu persatu secara berurutan. Setelah itu, terakhir, Klik OK untuk menutup jendela Data group.

Gambar 59. Buat Data group, dengan nama "tabel", penyimpanan lokal, recored mode setiap 10 detik, jumlah channel = 12, dengan variabel diisi 12 variabel internal 

2. Setelah di-klik OK, maka di halaman Data group akan ada 1 Data group, dengan nama tabel, dengan jumlah variabel yang disimpan sebanyak 12, dan mode penyimpanannya setiap 10 detik.

Gambar 60. Pembuatan Data group berhasil, dengan nama = tabel, jumlah variabel = 12, dengan mode penyimpanan secara berkala setiap 10 detik 

3. Setelah Data group selesai dibuat, buka halaman Display kedua (2:Display_1). Tempatkan objek Historical data report table, dari kategori Advanced controls di halaman Display kedua tersebut. 

Gambar 61. Tempatkan objek Historical data report table di halaman Display kedua

4. Klik 2 kali objek Historical data report table tersebut. Di jendela Historical data report table, klik pada tombol titik 3x. Di jendela History group, klik nama Data group (tabel). Muncul jendela Numerical display format, yang berisi daftar Channel dengan nilai di kolom Integer dan Digitsnya. Ubah nilainya sesuai gambar berikut ini, yang mengikuti Tabel 1 di atas. Klik OK untuk menutup jendela.

Gambar 62. Pilih Data group = tabel, dan atur format tampilan data sesuai Tabel 1

5. Tekan tombol Online simulation. Buka halaman Display2 dengan menekan tombol panah ke kanan di pojok kanan bawah. Di objek Historical data report table, di pojok kiri atas, terlihat 3 buah tombol. Ketiga tombol tersebut berturut-turut mulai dari kiri adalah tombol Time Interval, tombol Time Set dan tombol Save. Ketika tombol Time Interval ditekan, akan muncul jendela yang menampilkan 2 batas waktu, yaitu waktu mulai dan waktu akhir.  Isi kedua batas waktu tersebut, tekan tombol Confirm, maka secara otomatis, penyimpanan data akan dilakukan. Interval waktu penyimpanan akan mengikuti seting pada Record mode yang diisikan di Data group. Dalam contoh di sini, interval waktu telah diisi setiap 10 detik, dengan batas waktu mulai dan waktu akhir berdurasi 10 menit. Maka seharusnya akan menghasilkan 60 buah data. 

Gambar 63. Time Interval diatur dengan rentang waktu 10 menit

6. Klik tombol Confirm, maka datalogger akan berjalan. Tekan tombol ketiga, yaitu tombol Export untuk mengirimkan data tabel ke dalam Drive. File Export ini akan tersimpan dalam format csv, yang membuat kita mudah untuk menampilkan datanya di software Excel. Berikut ini tampilan data hasil Export yang dibuka di software Excel. Perhatikan bahwa jumlah data yang tersimpan adalah sebanyak 60 data, yang mana sesuai dengan batas waktu mulai dan akhir yang diisikan di Time Interval, dengan interval waktu per 10 detik, sesuai dengan seting interval yang diisikan di Record mode di Data group.

Gambar 64. Sebelum Time Interval diaktifkan, secara default Time Set bekerja

Gambar 65. Datalogger telah berhasil menyimpan data selama 10 menit, menghasilkan 60 baris data dari 12 variabel

7. Apabila pilihan Time Interval bisa digunakan untuk menampilkan data dengan batas waktu yang dapat kita tentukan sendiri secara bebas, maka pilihan kedua, yaitu Time Set, menawarkan fitur yang berbeda. Pilihan Time set ini memiliki batasan waktu yang terbatas, yaitu hanya dalam satuan menit saja. Jadi untuk rentang waktu yang lebih dari 1 jam, tidak bisa diterapkan dengan Time Set. Tetapi yang menarik dengan Time set ini adalah:
  • Secara default, ketika Time Interval tidak diisi, maka objek Historical data report table akan menjalankan Mode Time Set. 
  • Mode Time Set ini akan mempertahankan rentang waktu sesuai dengan nilai yang diisikan di kolom Time Set. Secara default nilai rentangnya adalah 5 menit. 
  • Data di urutan pertama, akan selalu di-update dengan data yang terbaru, sedangkan data di urutan yang terakhir, akan terhapus apabila rentang waktunya dengan data di urutan pertama, sudah melebihi nilai yang diisikan di kolom Time Set. Catatan: nilai Time Set ini ternyata selalu 5 menit, sekalipun di kolom Time Set diatur ke nilai 20 misalnya, ternyata hasilnya tetap 5 menit. seperti ditunjukkan dalam gambar berikut ini:
Gambar 66. Ketika kolom minute di Time Set diisi 20, ternyata tampilan tabel di objek Historical data report table tetap menampilkan data dengan rentang waktu 5 menit saja

Gambar 67. Hal yang menarik, ketika dilakukan Export data lagi setelah beberapa menit, terlihat catatan waktu data sudah berbeda dengan catatan waktu data di Gambar 66. Ini berarti data telah diupdate dengan data terkini.

Catatan Terakhir:
[Catatan ini telah dituliskan juga di halaman Datalogger] Hal yang menarik berikutnya di software HMI Haiwell adalah adanya fasilitas "Generate run file" dan "Generate U disk run file" yang ada di menu File. Berikut keterangannya:
  1. Fitur "Generate run file" akan bisa membangkitkan file aplikasi, yang dapat dijalankan tanpa perlu membuka software HMI Haiwell SCADA Develop. Dengan meng-klik 2 kali file aplikasi yang dihasilkan, software HMI Haiwell SCADA Runtime akan langsung berjalan. Di samping lebih praktis, juga membuat file aplikasi kita tidak dapat di-"otak-atik" isinya. Pengguna hanya bisa menjalankan file tanpa bisa membuka "isi di dalamnya". Jadi file aplikasi ini sangat bermanfaat ketika kita ingin mendistribusikan file aplikasi yang kita buat. 
  2. Fitur "Generate U disk run file" akan bisa membangkitkan file yang dijalankan di hardware HMI Haiwell. Jadi tidak perlu menggunakan bantuan komputer untuk meng-upload program, cukup mengirimkan file hasil "Generate U disk run file" ini ke pengguna, maka aplikasi yang kita buat akan dapat dijalankan di hardware HMI Haiwell.
8. Agar lebih jelas mengenai materi Simulasi Datalogger ini, rekan-rekan dapat melihat video berikut ini.

Video pembuatan simulasi datalogger

9. Sampai di sini materi tentang Simulasi Datalogger menggunakan Proteus dan HMI Haiwell, dengan data yang di-"log" berupa 12 buah variabel, dari 9 buah sensor, dengan 3 buah Arduino, yang terhubung dengan HMI Haiwell melalui protokol modbus RTU. File-file yang diperlukan dalam pembuatan simulasi datalogger ini, dan juga file aplikasi yang dihasilkan, dapat rekan-rekan unduh di link ini: 

No comments:

Post a Comment