Example #1
0
def readPF():
    # data = device.read(0xf002, 2)  #read power factor
    # pf = util.data_to_float(data)
    # print 'power factor = %s' % pf
    data = device.read(0xf10a, 2)  #read power factor
    pf = util.data_to_float(data)
    print 'power factor = %s' % pf
    return pf
Example #2
0
    def data_read(self):

        # Changed to the bulk read option to speed up acquisition time

        # freq = self.generic_float_read(999)

        #p1 = self.generic_float_read(1025)
        #p2 = self.generic_float_read(1027)
        #p3 = self.generic_float_read(1029)

        read_start = 999
        read_end = 1121  #2440
        data = self.bulk_float_read(start=read_start, end=read_end)

        freq_offset = 999 - read_start
        freq = util.data_to_float(data[freq_offset * 2 + 0:freq_offset * 2 +
                                       4])

        p_offset = 1025 - read_start
        p1 = util.data_to_float(data[p_offset * 2 + 0:p_offset * 2 + 4])
        p2 = util.data_to_float(data[p_offset * 2 + 4:p_offset * 2 + 8])
        p3 = util.data_to_float(data[p_offset * 2 + 8:p_offset * 2 + 12])

        var_offset = 1041 - read_start
        var1 = util.data_to_float(data[var_offset * 2 + 0:var_offset * 2 + 4])
        var2 = util.data_to_float(data[var_offset * 2 + 4:var_offset * 2 + 8])
        var3 = util.data_to_float(data[var_offset * 2 + 8:var_offset * 2 + 12])

        v_offset = 1103 - read_start
        v1 = util.data_to_float(data[v_offset * 2 + 0:v_offset * 2 + 4])
        v2 = util.data_to_float(data[v_offset * 2 + 4:v_offset * 2 + 8])
        v3 = util.data_to_float(data[v_offset * 2 + 8:v_offset * 2 + 12])

        va_offset = 1057 - read_start
        va1 = util.data_to_float(data[va_offset * 2 + 0:va_offset * 2 + 4])
        va2 = util.data_to_float(data[va_offset * 2 + 4:va_offset * 2 + 8])
        va3 = util.data_to_float(data[va_offset * 2 + 8:va_offset * 2 + 12])

        i_offset = 1117 - read_start
        i1 = util.data_to_float(data[i_offset * 2 + 0:i_offset * 2 + 4])
        i2 = util.data_to_float(data[i_offset * 2 + 4:i_offset * 2 + 8])
        i3 = util.data_to_float(data[i_offset * 2 + 8:i_offset * 2 + 12])

        read_start = 3973  # Elspec unit rejects any read that includes 2441, so need to do a second read
        read_end = 3977
        data = self.bulk_float_read(start=read_start, end=read_end)

        pf_offset = 3973 - read_start
        pf1 = util.data_to_float(data[pf_offset * 2 + 0:pf_offset * 2 + 4])
        pf1 = -p1 / va1 * var1 / abs(var1)
        pf2 = util.data_to_float(data[pf_offset * 2 + 4:pf_offset * 2 + 8])
        pf2 = -p2 / va2 * var2 / abs(var2)
        pf3 = util.data_to_float(data[pf_offset * 2 + 8:pf_offset * 2 + 12])
        pf3 = -p3 / va3 * var3 / abs(var3)
        '''data = self.bulk_float_read(start=3475, end=3479)
        pf1 = 1
        pf2 = 2
        pf3 = 3'''

        # 3 phase option
        datarec = {
            'TIME': time.time(),
            'AC_VRMS_1': v1,
            'AC_IRMS_1': i1,
            'AC_P_1': p1,
            'AC_S_1': va1,
            'AC_Q_1': var1,
            'AC_PF_1': pf1,
            'AC_FREQ_1': freq,
            'AC_VRMS_2': v2,
            'AC_IRMS_2': i2,
            'AC_P_2': p2,
            'AC_S_2': va2,
            'AC_Q_2': var2,
            'AC_PF_2': pf2,
            'AC_FREQ_2': freq,
            'AC_VRMS_3': v3,
            'AC_IRMS_3': i3,
            'AC_P_3': p3,
            'AC_S_3': va3,
            'AC_Q_3': var3,
            'AC_PF_3': pf3,
            'AC_FREQ_3': freq,
            'DC_V': None,
            'DC_I': None,
            'DC_P': None,
            'TRIG': None,
            'TRIG_GRID': None
        }

        data = []
        for chan in data_points:
            data.append(datarec[chan])

        return data
Example #3
0
def generic_float_read(reg):
    data = device.read(reg, 2, op=client.FUNC_READ_INPUT)
    data_num = util.data_to_float(data)
    return data_num
Example #4
0
1119: I2
1121: I3
3475: PF1
3477: PF2
3479: PF3
'''

if __name__ == "__main__":

    ipaddr = '1.1.1.39'
    #ipaddr = str(raw_input('ip address: '))
    device = None

    if ipaddr:
        device = client.ModbusClientDeviceTCP(slave_id=159,
                                              ipaddr=ipaddr,
                                              ipport=502,
                                              timeout=10)  #, trace_func=trace)

        data = device.read(1025, 2, op=client.FUNC_READ_INPUT)
        print((util.data_to_float(data)))
        data = device.read(1027, 2, op=client.FUNC_READ_INPUT)
        print((util.data_to_float(data)))
        data = device.read(1029, 2, op=client.FUNC_READ_INPUT)
        print((util.data_to_float(data)))

        print(('%s' % data_read()))
        print((data_read()['AC_P_1']))
        print((data_read()['AC_P_2']))
        print((data_read()['AC_P_3']))
def readFloatPower():
    data = device.read(11735, 2)
    watt = util.data_to_float(data)
    return watt
def readFloatPF():
    data = device.read(11759, 2)
    pf = util.data_to_float(data)
    return pf
def readFloatHz():
    data = device.read(11761, 2)
    freq = util.data_to_float(data)
    return freq
def bulk_float_read(device, start=11700, end=11762):
    actual_start = start - 1  # the register is one less than reported in the literature
    actual_length = (end - start) + 2
    print(('Start Reg: %s, Read Length: %s' % (actual_start, actual_length)))

    data = device.read(actual_start, actual_length)
    print(('Data length: %s' % len(data)))
    print(('Start Reg: %s, End Reg: %s' %
           (reg_shift(11762)[0], reg_shift(11762)[1])))
    print(util.data_to_float(data[reg_shift(11762)[0]:reg_shift(11762)[1]]))

    datarec = {
        'time':
        time.time(),
        'ac_1': (
            util.data_to_float(
                data[reg_shift(11720)[0]:reg_shift(11720)[1]]),  # Voltage, A-N
            util.data_to_float(data[reg_shift(11700)[0]:reg_shift(11700)[1]]
                               ),  # Current, Phase A
            util.data_to_float(data[reg_shift(11730)[0]:reg_shift(11730)[1]]
                               ),  # Real Power, Phase A
            util.data_to_float(data[reg_shift(11746)[0]:reg_shift(11746)[1]]
                               ),  # Apparent Power, Phase A
            util.data_to_float(data[reg_shift(11738)[0]:reg_shift(11738)[1]]
                               ),  # Reactive Power, Phase A
            util.data_to_float(data[reg_shift(11754)[0]:reg_shift(11754)[1]]
                               ),  # True Power Factor, Phase A
            util.data_to_float(
                data[reg_shift(11762)[0]:reg_shift(11762)[1]])),  # Frequency
        'ac_2': (
            util.data_to_float(
                data[reg_shift(11722)[0]:reg_shift(11722)[1]]),  # Voltage, B-N
            util.data_to_float(data[reg_shift(11702)[0]:reg_shift(11702)[1]]
                               ),  # Current, Phase B
            util.data_to_float(data[reg_shift(11732)[0]:reg_shift(11732)[1]]
                               ),  # Real Power, Phase B
            util.data_to_float(data[reg_shift(11748)[0]:reg_shift(11748)[1]]
                               ),  # Apparent Power, Phase B
            util.data_to_float(data[reg_shift(11740)[0]:reg_shift(11740)[1]]
                               ),  # Reactive Power, Phase B
            util.data_to_float(data[reg_shift(11756)[0]:reg_shift(11756)[1]]
                               ),  # True Power Factor, Phase B
            util.data_to_float(
                data[reg_shift(11762)[0]:reg_shift(11762)[1]])),  # Frequency
        'ac_3': (
            util.data_to_float(
                data[reg_shift(11724)[0]:reg_shift(11724)[1]]),  # Voltage, C-N
            util.data_to_float(data[reg_shift(11704)[0]:reg_shift(11704)[1]]
                               ),  # Current, Phase C
            util.data_to_float(data[reg_shift(11734)[0]:reg_shift(11734)[1]]
                               ),  # Real Power, Phase C
            util.data_to_float(data[reg_shift(11750)[0]:reg_shift(11750)[1]]
                               ),  # Apparent Power, Phase C
            util.data_to_float(data[reg_shift(11742)[0]:reg_shift(11742)[1]]
                               ),  # Reactive Power, Phase C
            util.data_to_float(data[reg_shift(11758)[0]:reg_shift(11758)[1]]
                               ),  # True Power Factor, Phase C
            util.data_to_float(
                data[reg_shift(11762)[0]:reg_shift(11762)[1]])),  # Frequency
        'dc': (None, None, None)
    }

    return datarec
 def generic_float_read(self, reg_in_lit):
     data = self.device.read(
         reg_in_lit - 1,
         2)  # the register is one less than reported in the literature
     data_num = util.data_to_float(data)
     return data_num
Example #10
0
 def test_data_to_float(self):
     self.assertEqual(util.data_to_float(b'\x7f\xc0\x00\x00'), None)
     self.assertEqual(util.data_to_float(b'\x44\x7a\x00\x00'), float(1000))
     self.assertEqual(util.data_to_float(b'\xc4\x7a\x00\x00'), float(-1000))
Example #11
0
 def test_data_to_float(self):
     self.assertEqual(util.data_to_float(b'\x7f\xc0\x00\x00'), None)
     self.assertEqual(util.data_to_float(b'\x44\x7a\x00\x00'), float(1000))
     self.assertEqual(util.data_to_float(b'\xc4\x7a\x00\x00'), float(-1000))