Exemple #1
0
    def __init__(self, source_ip, source_port, listen_ip, listen_port, pdc_id=1, method="tcp", buffer_size=2048):

        self.pdc = Pdc(pdc_id, source_ip, source_port, buffer_size, method)
        self.pmu = Pmu(ip=listen_ip, port=listen_port, method=method, buffer_size=buffer_size, set_timestamp=False)

        self.source_cfg1 = None
        self.source_cfg2 = None
        self.source_cfg3 = None
        self.source_header = None
Exemple #2
0
    def __init__(self,
                 source_ip,
                 source_port,
                 listen_ip,
                 listen_port,
                 pdc_id=1,
                 method='tcp',
                 buffer_size=2048):

        self.pdc = Pdc(pdc_id, source_ip, source_port, buffer_size, method)
        self.pmu = Pmu(ip=listen_ip,
                       port=listen_port,
                       method=method,
                       buffer_size=buffer_size)

        self.source_cfg1 = None
        self.source_cfg2 = None
        self.source_cfg3 = None
        self.source_header = None
Exemple #3
0
    def init_pdc(self):

        for idx, item in enumerate(self.ip_list):
            pmu_idx = int(item.split('.')[3])

            self.pdc[idx] = Pdc(pdc_id=pmu_idx,
                                pmu_ip=self.ip_list[idx],
                                pmu_port=1410)

            self.pdc[idx].logger.setLevel("INFO")
        logger.info('PDC initialized')
Exemple #4
0
class StreamSplitter(object):
    def __init__(self,
                 source_ip,
                 source_port,
                 listen_ip,
                 listen_port,
                 pdc_id=1,
                 method="tcp",
                 buffer_size=2048):

        self.pdc = Pdc(pdc_id, source_ip, source_port, buffer_size, method)
        self.pmu = Pmu(ip=listen_ip,
                       port=listen_port,
                       method=method,
                       buffer_size=buffer_size,
                       set_timestamp=False)

        self.source_cfg1 = None
        self.source_cfg2 = None
        self.source_cfg3 = None
        self.source_header = None

    def run(self):

        self.pdc.run()
        self.source_header = self.pdc.get_header()
        self.source_cfg2 = self.pdc.get_config()
        self.pdc.start()

        self.pmu.run()
        self.pmu.set_header(self.source_header)
        self.pmu.set_configuration(self.source_cfg2)

        while True:

            message = self.pdc.get()

            if self.pmu.clients and message:

                self.pmu.send(message)

                if isinstance(message, HeaderFrame):
                    self.pmu.set_header(message)
                elif isinstance(message, ConfigFrame2):
                    self.pmu.set_configuration(message)
Exemple #5
0
class StreamSplitter(object):

    def __init__(self, source_ip, source_port, listen_ip, listen_port, pdc_id=1, method="tcp", buffer_size=2048):

        self.pdc = Pdc(pdc_id, source_ip, source_port, buffer_size, method)
        self.pmu = Pmu(ip=listen_ip, port=listen_port, method=method, buffer_size=buffer_size, set_timestamp=False)

        self.source_cfg1 = None
        self.source_cfg2 = None
        self.source_cfg3 = None
        self.source_header = None


    def run(self):

        self.pdc.run()
        self.source_header = self.pdc.get_header()
        self.source_cfg2 = self.pdc.get_config()
        self.pdc.start()

        self.pmu.run()
        self.pmu.set_header(self.source_header)
        self.pmu.set_configuration(self.source_cfg2)

        while True:

            message = self.pdc.get()

            if self.pmu.clients and message:

                self.pmu.send(message)

                if isinstance(message, HeaderFrame):
                    self.pmu.set_header(message)
                elif isinstance(message, ConfigFrame2):
                    self.pmu.set_configuration(message)
Exemple #6
0
    arguments = argument_parser.parse_args()

    # Receive ideal number of measurements in 60s.
    measurements2receive = 60 * arguments.data_rate
    timestamp = datetime.now().strftime("%Y%m%d_%H-%M-%S")
    errors = 0

    print(
        "Running PDC(s) on {:d} separate thread(s) waiting for {:d}  measurements with expected"
        " data rate of {:d} measurements per second.\n".format(
            arguments.jobs, measurements2receive, arguments.data_rate))
    sleep(2)

    pdc = Pdc(pdc_id=arguments.id,
              pmu_ip=arguments.ip,
              pmu_port=arguments.port,
              buffer_size=arguments.buffer,
              method=arguments.method)
    pdc.logger.setLevel(arguments.log_level)

    pdc.run()  # Connect to PMU

    header = pdc.get_header()  # Get header message from PMU
    config = pdc.get_config()  # Get configuration from PMU

    # Create result folder
    if not os.path.exists("results/" + str(arguments.data_rate)):
        os.makedirs("results/" + str(arguments.data_rate))

    log = "./results/{:d}/result_j{:d}_id_{:d}_{:s}.log".format(
        arguments.data_rate, arguments.jobs, arguments.id, timestamp)
Exemple #7
0
                    #               digital=[0x0001])
                    pmu.send(
                        cybergrid_data_sample
                    )  # Sending sample data frame specified in IEEE C37.118.2 - Annex D (Table D.1)
                    phaseAng1 = phaseIncrem(phaseAng1)
                    phaseAng2 = phaseIncrem(phaseAng2)
                    phaseAng3 = phaseIncrem(phaseAng3)

        except EnvironmentError as e:
            print(e)
            sys.exit()

    pmu.join()

if exec_type == "PDC":
    pdc = Pdc(pdc_id=int(pmuID), pmu_ip=pmu_ip, pmu_port=int(port))
    pdc.logger.setLevel("DEBUG")
    pdc.run()  # Connect to PMU
    try:
        header = pdc.get_header()  # Get header message from PMU
        config = pdc.get_config()  # Get configuration from PMU
    except BrokenPipeError as e:
        pdc.quit()
        sys.exit()

    pdc.start()  # Request to start sending measurements

    while True:

        data = pdc.get()  # Keep receiving data
Exemple #8
0
    for x in range(5):
        ip = str(IPv4Address('127.0.1.10') + x)
        idd = 2 + x
        print(ip)
        #127.0.1.10", port=1420
        #pdc(x) = Pdc(pdc_id=7, pmu_ip=ip, pmu_port=4712)
        #pdc1 = Pdc(pdc_id=7, pmu_ip="127.0.0.4", pmu_port=4712)
        # pdc.logger.setLevel("DEBUG")
        # pdc1.logger.setLevel("DEBUG")

        n = os.fork()

        if n == 0:
            print("Child process : ", os.getpid())
            pdc = Pdc(pdc_id=idd, pmu_ip=ip, pmu_port=1420)
            pdc.logger.setLevel("DEBUG")
            pdc.run()
            header = pdc.get_header()
            config = pdc.get_config()
            pdc.start()
            while True:
                data = pdc.get()

                if type(data) == DataFrame:
                    print(data.get_measurements())

                if not data:
                    pdc.quit()
                    break
        else:
Exemple #9
0
from multiprocessing import Process, Pipe, Queue

iplist = []
iplist.append('127.0.0.1')
iplist.append('127.0.0.2')
iplist.append('127.0.0.3')
iplist.append('127.0.0.4')
iplist.append('127.0.0.5')
iplist.append('127.0.0.6')
iplist.append('127.0.0.7')
iplist.append('127.0.0.8')

pmunumber = 8

if __name__ == "__main__":
    pdc1 = Pdc(pdc_id=7, pmu_ip=iplist[0], pmu_port=1410)
    pdc2 = Pdc(pdc_id=7, pmu_ip=iplist[1], pmu_port=1410)
    pdc3 = Pdc(pdc_id=7, pmu_ip=iplist[2], pmu_port=1410)
    #    pdc4 = Pdc(pdc_id=7, pmu_ip=iplist[3], pmu_port=1410)

    pdc1.logger.setLevel("DEBUG")
    pdc2.logger.setLevel("DEBUG")
    pdc3.logger.setLevel("DEBUG")
    #    pdc4.logger.setLevel("DEBUG")

    pdc1.run()  # Connect to PMU
    pdc2.run()  # Connect to PMU
    pdc3.run()  # Connect to PMU
    #    pdc4.run()  # Connect to PMU

    header = pdc1.get_header()  # Get header message from PMU
Exemple #10
0
from synchrophasor.pdc import Pdc

"""
tinyPDC will connect to pmu_ip:pmu_port and send request
for header message, configuration and eventually
to start sending measurements. ONLY FOR TCP
"""

pdc = Pdc(pdc_id=7, pmu_ip='127.0.0.1', pmu_port=4712)

pdc.run()  # Connect to PMU

header = pdc.get_header()  # Get header message from PMU
config = pdc.get_config()  # Get configuration from PMU

pdc.start()  # Request to start sending measurements

while True:
    data = pdc.get()  # Keep receiving data
    if not data:
        pdc.quit()  # Close connection
        break
Exemple #11
0
def pdcThread(pmuID, pmu_ip, port, buffSize):
    pdc = Pdc(pdc_id=int(pmuID),
              pmu_ip=pmu_ip,
              pmu_port=int(port),
              buffer_size=buffSize)
    # pdc.logger.setLevel("DEBUG")
    pdc.run()  # Connect to PMU
    dt_buffer = list()
    try:
        header = pdc.get_header()  # Get header message from PMU
        config = pdc.get_config()  # Get configuration from PMU
    except BrokenPipeError as e:
        pdc.quit()
        sys.exit()

    pdc.start()  # Request to start sending measurements

    while True:

        data = pdc.get()  # Keep receiving data
        if data is None:
            data = pdc.get()  # Try again receiving data
        if type(data) == DataFrame:
            outData = data.get_measurements()
            yield outData
        if not data:
            pdc.quit()  # Close connection
            break
Exemple #12
0
from synchrophasor.pdc import Pdc
from synchrophasor.frame import DataFrame

"""
tinyPDC will connect to pmu_ip:pmu_port and send request
for header message, configuration and eventually
to start sending measurements.
"""


if __name__ == "__main__":

    pdc = Pdc(pdc_id=1, pmu_ip="192.168.137.79", pmu_port=4712)
    pdc.logger.setLevel("DEBUG")

    pdc.run()  # Connect to PMU

    # header = pdc.get_header()  # Get header message from PMU
    config = pdc.get_config()  # Get configuration from PMU

    pdc.start()  # Request to start sending measurements

    while True:

        data = pdc.get()  # Keep receiving data

        if type(data) == DataFrame:
            print(data.get_measurements())

        if not data:
            pdc.quit()  # Close connection