Pada bagian sebelumnya telah dijelaskan standar modbus untuk melakukan pembacaan pada sensor daya Pzem-004T. Contoh kasus yang diberikan adalah untuk membaca input register pada alamat tunggal yaitu tegangan dan frekuensi. Bagaimana jika memanggil pembacaan data dengan 16 byte seperti pengukuran arus ? Mari kita baca datasheet dibawah ini :
Terlihat alamat untuk melihat pengukuran arusnya adalah 0x0001 s/d 0x0002 dimana dipecah menjadi 2 bagian 16 bits / 2 byte. Hasil pada real term seperti ini :
01 04 00 01 00 02 20 0B
Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar modbus adalah seperti berikut:
01 = Alamat device id slave
04 = Perintah membaca input register/ function 04
00 01 = 2 byte alamat address memori untuk arus pada 0x0001
00 02 = 2 byte jumlah data yang diminta berupa 2 alamat
20 0B = Checksum / CRC 16 modbus
Dan replynya seperti berikut :
01 04 04 00 26 00 00 1A 4F
01 = Alamat device id slave
04 = Perintah membaca input register/ function 04
04 = jumlah byte data yg di response berjumlah 4 byte
00 26 = 2 byte data arus LSB ( digit belakang)
00 00 = 2 byte data arus MSB ( digit depan)
1A 4F = Checksum / CRC 16 modbus
Jadi dari data diatas didapatkan reply 2 byte hexa 0x00 (depan) dan 0x26 (belakang) sehingga angka desimalnya adalah 0 dan 38. Jadi berdasarkan datasheet angka pengukuran arusnya adalah 0,038 ampere atau 38 mA.
Jika ingin merubah ID dari modbus Pzem maka kita harus kembali ke datasheet dimana perintah command yg diberikan adalah 0x06 pada address memori 0x0002.
Slave Address + 0x06 + Register Address High Byte + Register Address Low Byte + Register
Value High Byte + Register Value Low Byte + CRC Check High Byte + CRC Check Low Byte.
Sehingga jika ingin merubah ID pzem menjadi 100 (desimal) atau hexa 0x64 perintahnya seperti berikut :
01 06 00 02 00 64 29 E1
Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar modbus adalah seperti berikut:
01 = Alamat device id slave
06 = Perintah ubah register/ function 06
00 02 = 2 byte alamat address memori untuk ID modbus 0x002
00 64 = 2 byte alamat baru 100 ( 0x64)
29 E1 = Checksum / CRC 16 modbus
Reply yg diberikan jika perubahan benar terjadi dan disimpan adalah sama dengan hexa yg dikirim seperti gambar diatas. Dan kini perangkat Pzem nya sudah memiliki ID baru yaitu 100 seperti yg terlihat pada gambar berikut :
Sedangkan hal yg perlu diperhatikan selanjutnya adalah perintah untuk mereset jumlah pemakaian energi watt hour menjadi nol dimana pada data sheet diberikan petunjuk dengan menggunakan perintah ID + 0x42 + CRC , dimana jika pada alamat 100 seperti gambar dibawah :
Pada software pzem PC juga bisa dilihat hasil resetnya :
Lalu sempat terpikir, bagaimana jika tidak mengetahui alamat slave ID dari Pzem ? Ada kok caranya mereset menurut datasheet ...
0xF8 + 0x41 + 0x37 + 0x21 + CRC check high byte + CRC check low byte. ( 3721 adalah password default ).
Mari kita coba ...
Ternyata response nya gagal.....0xF8 0xC1 artinya gagal melakukan kalibrasi awal....lain kali kita coba lagi
0 komentar:
Posting Komentar