Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }