private void GetData() { try { byte slaveAddress = (byte)txtSlave.Value; byte functionCode = 3; //3 = holding register. ushort id = functionCode; /* read holding register to buffer */ int[] readHoldRegisters = read_HoldingRegisters(id, slaveAddress, 0, functionCode, 27); int[] readHoldRegistersTotalizer = read_HoldingRegisters(id, slaveAddress, 608, functionCode, 11); /* Copy buffer to variable */ vR = (readHoldRegisters[1] * 0.1); vS = (readHoldRegisters[3] * 0.1); vT = (readHoldRegisters[5] * 0.1); vRS = (readHoldRegisters[21] * 0.1); vST = (readHoldRegisters[23] * 0.1); vTR = (readHoldRegisters[25] * 0.1); cR = (readHoldRegisters[7] * 0.001); cS = (readHoldRegisters[9] * 0.001); cT = (readHoldRegisters[11] * 0.001); PF = (readHoldRegisters[13] * 0.01); freq = (readHoldRegisters[15] * 0.1); Ptot = (((readHoldRegisters[16] << 16) + readHoldRegisters[17]) * 0.0001); Qtot = (((readHoldRegisters[18] << 16) + readHoldRegisters[19]) * 0.0001); kWhtot = (((readHoldRegistersTotalizer[0] << 16) + readHoldRegistersTotalizer[1])); KVARtot = (((readHoldRegistersTotalizer[8] << 16) + readHoldRegistersTotalizer[9])); /* Show data */ switch (dataApa) { case "voltage_1ph": strR.Text = vR.ToString("#,##0.0"); strS.Text = vS.ToString("#,##0.0"); strT.Text = vT.ToString("#,##0.0"); break; case "current": strR.Text = cR.ToString("#,##0.00"); strS.Text = cS.ToString("#,##0.00"); strT.Text = cT.ToString("#,##0.00"); break; case "powerFactor": strR.Text = PF.ToString("#,##0.00"); break; case "frequency": strR.Text = freq.ToString("#,##0.00"); break; case "power": strR.Text = Ptot.ToString("#,##0.000"); strTotal.Text = kWhtot.ToString("#,#0.0"); strUnit2.Text = "kWh"; dataApa2 = "total_kWh"; break; case "reactivePower": strR.Text = Qtot.ToString("#,##0.000"); strTotal.Text = KVARtot.ToString("#,#0.0"); strUnit2.Text = "kVARh"; dataApa2 = "total_kVARh"; break; case "voltage_3ph": strR.Text = vRS.ToString("#,##0.0"); strS.Text = vST.ToString("#,##0.0"); strT.Text = vTR.ToString("#,##0.0"); break; } switch (dataApa2) { case "total_kWh": strTotal.Text = kWhtot.ToString("#,#0.0"); strUnit2.Text = "kWh"; break; case "total_kVARh": strTotal.Text = KVARtot.ToString("#,#0.0"); strUnit2.Text = "kVARh"; break; } } catch (Exception ex) { ambilData = false; btnState = false; button1.Text = "Connect"; txtSlave.Enabled = true; txtHost.Enabled = true; MessageBox.Show(ex.Message); } }
private void timer4_Tick(object sender, EventArgs e) { string time = DateTime.Now.ToString("hh:mm:ss"); string date = DateTime.Now.ToString("ddMMyyyy"); string headerTeks = "Time,cR,cS,CT,vR,vS,vT,vRS,vST,vTR,freq,PF,pTot,qTot,kWhtot\n"; string logTeks = time + "," + cR.ToString("#,##0.00") + "," + cS.ToString("#,##0.00") + "," + cT.ToString("#,##0.00") + "," + vR.ToString("#,##0.0") + "," + vS.ToString("#,##0.0") + "," + vT.ToString("#,##0.0") + "," + vRS.ToString("#,##0.0") + "," + vST.ToString("#,##0.0") + "," + vTR.ToString("#,##0.0") + "," + freq.ToString("#,##0.00") + "," + PF.ToString("#,##0.00") + "," + Ptot.ToString("#,##0.000") + "," + Qtot.ToString("#,##0.000") + "," + kWhtot.ToString("#,#0.0") + Environment.NewLine; string namaFile = date; writeCSV(namaFile, logTeks, headerTeks); }