Exemplo n.º 1
0
 def get_errors(self):
     data = ProfinetGetParametersRequest(
         Reference=self.request_id,
         Parameters=[ProfinetParameter(Indices=1, ID=2120, Index=0)])
     pkt = self.create_packet(
         CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id, data))
     self.acyclic_access(pkt)
Exemplo n.º 2
0
 def set_password(self, password):
     parameters = ProfinetSetParametersRequest(
         Reference=self.request_id,
         Parameters=[ProfinetParameter(Indices=1, ID=3950, Index=0)])
     value = ProfinetParametersValues(Values=[
         ProfinetParameterValue(
             Format=66, NumIndex=1, Value=struct.pack(">H", password))
     ])
     pkt = self.create_packet(
         CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id,
                                    parameters / value))
     res, data = self.acyclic_access(pkt)
Exemplo n.º 3
0
 def set_watchdog(self, timeout):
     parameters = ProfinetSetParametersRequest(
         Reference=self.request_id,
         Parameters=[ProfinetParameter(Indices=1, ID=3984,
                                       Index=0)])  # TODO: define constant
     value = ProfinetParametersValues(Values=[
         ProfinetParameterValue(
             Format=67, NumIndex=1, Value=struct.pack(">I", timeout))
     ])
     pkt = self.create_packet(
         CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id,
                                    parameters / value))
     res, data = self.acyclic_access(pkt)
     return res
Exemplo n.º 4
0
    def flash_errors(self):
        rl.debug("Flash ERROR = %s", self.request_id)
        parameters = ProfinetSetParametersRequest(
            Reference=self.request_id,
            Parameters=[ProfinetParameter(Indices=1, ID=3981, Index=0)])
        value = ProfinetParametersValues(Values=[
            ProfinetParameterValue(
                Format=0x41, NumIndex=1, Value=struct.pack("<H", 1))
        ])

        pkt = self.create_packet(
            CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id,
                                       parameters / value))
        res, data = self.acyclic_access(pkt)
        rl.debug("res = %s\tdata = %s", res, data)
        return res
Exemplo n.º 5
0
    def set_parameters(self, parameter, type_format, struct_format, value):
        rl.debug("set parameters  = %s", parameter)
        parameters = ProfinetSetParametersRequest(
            Reference=self.request_id,
            Parameters=[ProfinetParameter(Indices=1, ID=parameter, Index=0)])
        value = ProfinetParametersValues(Values=[
            ProfinetParameterValue(Format=type_format,
                                   NumIndex=1,
                                   Value=struct.pack(struct_format, value))
        ])

        pkt = self.create_packet(
            CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id,
                                       parameters / value))
        res, data = self.acyclic_access(pkt)
        rl.debug("res = %s\tdata = %s", res, data)
        return res
Exemplo n.º 6
0
    def send_telegram(self, cw=0, rpm=0):
        if cw:
            self.cw = cw
        if rpm:
            self.rpm = rpm

        telegram = ProfinetTelegram(CW=self.cw, RPM=self.rpm)

        rl.debug("cw = %s, rpm = %s", hex(self.cw), self.rpm)

        pkt = self.create_packet(
            CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id, telegram,
                                       0x0065))  # TODO: define constant
        reply = srp1(pkt, timeout=1)
        if not self.check_packet(reply) or not CheckProfinetWriteResponse(
                reply.load):
            self.connected = False
Exemplo n.º 7
0
    def get_state(self):
        if not self.connected:
            self.connect()
        if self.connected:
            self.request_id += 1
            if self.request_id > 255:
                self.request_id = 1

            data = ProfinetGetParametersRequest(Reference=self.request_id,
                                                Parameters=[
                                                    ProfinetParameter(ID=2089,
                                                                      Index=0),
                                                    ProfinetParameter(ID=63),
                                                    ProfinetParameter(ID=82,
                                                                      Index=2),
                                                    ProfinetParameter(ID=1073),
                                                    ProfinetParameter(ID=66),
                                                    ProfinetParameter(ID=72),
                                                    ProfinetParameter(ID=70),
                                                    ProfinetParameter(ID=68,
                                                                      Index=1),
                                                    ProfinetParameter(ID=80,
                                                                      Index=1),
                                                    ProfinetParameter(ID=722),
                                                    ProfinetParameter(ID=87),
                                                    ProfinetParameter(ID=2131),
                                                    ProfinetParameter(ID=2132),
                                                    ProfinetParameter(ID=39,
                                                                      Index=0),
                                                    ProfinetParameter(ID=39,
                                                                      Index=1),
                                                    ProfinetParameter(ID=39,
                                                                      Index=2),
                                                    ProfinetParameter(ID=2000),
                                                    ProfinetParameter(ID=1082),
                                                ])

            pkt = self.create_packet(
                CreateProfinetWriteRequest(self.dcerpc_id, self.pnio_id, data))
            reply = srp1(pkt, timeout=2)
            if self.check_packet(reply) and CheckProfinetWriteResponse(
                    reply.load):
                pkt = self.create_packet(
                    CreateProfinetReadRequest(self.dcerpc_id, self.pnio_id,
                                              564, 64))
                reply = srp1(pkt, timeout=2)
                if self.check_packet(reply):
                    res, data = CheckProfinetReadResponse(reply.load)
                    if res and data:
                        vfd_values = self.set_values_to_dict(
                            GetProfinetParametersValue(data))
                        # self.vfd_shm.vfd_state(vfd_values)
                        rl.debug("Parameters value = %s", vfd_values)

                        return vfd_values
                else:
                    self.connected = False
            else:
                self.connected = False

        rl.debug("self.connected = %s", self.connected)
        return None