예제 #1
0
    def PID_controller_input(self,
                             user,
                             P=0.2,
                             I=0.0,
                             D=0.0,
                             SETPOINT=1.0,
                             TS=0.05,
                             SAMPLES=100,
                             WAVETYPE={}):
        output = {}
        if self.controller_thread is None or self.controller_thread.isAlive(
        ) == False or self.controller_thread.failed["status"]:
            self.controller_thread = PID.ControllerThread(
                daqmxlib.Reader({"ai0": 1}, device=self.device),
                daqmxlib.Actuator(["ao0"], device=self.device),
                user,
                P=P,
                I=I,
                D=D,
                SETPOINT=SETPOINT,
                TS=TS,
                SAMPLES=SAMPLES,
                WAVETYPE=WAVETYPE)
            self.controller_thread.start()

            output["completed"] = self.controller_thread.completed
            output["controller"] = self.controller_thread.type
            output["success"] = True
            output["message"] = "Actuated successfully."
            output["status"] = 200
        else:
            output["message"] = "Controller is still running."
            output["success"] = False
            output["status"] = 200

        output["timestamp"] = str(datetime.now())
        return output