diff options
author | SudhakarKuma | 2021-10-16 02:06:49 +0530 |
---|---|---|
committer | SudhakarKuma | 2021-10-16 02:06:49 +0530 |
commit | f1fa6caabd9f8036c7fa0bb33f2603e9217cd2e6 (patch) | |
tree | b39c4055d2a5142fbf7d4135054bfa84a9260055 | |
download | OM-OPCUA-Control-f1fa6caabd9f8036c7fa0bb33f2603e9217cd2e6.tar.gz OM-OPCUA-Control-f1fa6caabd9f8036c7fa0bb33f2603e9217cd2e6.tar.bz2 OM-OPCUA-Control-f1fa6caabd9f8036c7fa0bb33f2603e9217cd2e6.zip |
Add files for the P controller
-rw-r--r-- | P-Controller/tankPController.py | 57 | ||||
-rw-r--r-- | P-Controller/tankRPiModel.mo | 8 | ||||
-rw-r--r-- | P-Controller/tankRPiModel_res.mat | bin | 0 -> 32491 bytes | |||
-rw-r--r-- | P-Controller/tankSysOMP.mo | 13 | ||||
-rw-r--r-- | PI-Controller/tankRPiModel.mo | 8 | ||||
-rw-r--r-- | PI-Controller/tankSysOMPI.mo | 16 |
6 files changed, 102 insertions, 0 deletions
diff --git a/P-Controller/tankPController.py b/P-Controller/tankPController.py new file mode 100644 index 0000000..40f2d60 --- /dev/null +++ b/P-Controller/tankPController.py @@ -0,0 +1,57 @@ +from opcua import Client +from opcua import ua +import time +import logging + +# Define the URL on which the server is broadcasting +url = "opc.tcp://192.168.0.171:4841" + +if __name__ == "__main__": + client = Client(url) + logging.basicConfig(level=logging.WARN) + + try: + client.connect() + print("Client connected!") + + run = client.get_node(ua.NodeId(10001, 0)) + run.set_value(True) + # print("Current state of run : {}".format(run.get_value())) + + root = client.get_root_node() + # print("Root node is : ", root) + + objects = client.get_objects_node() + # print("Objects\' node is : ", objects) + + # Find the IDs for MV, PV + H_ID = 6 + U_ID = 8 + + modelicaId = {} + modelicaId = objects.get_children() + + # Desired setpoint + SP = 1 + + # Controller gain + Kc = 0.2 + + while True: + # Evaluate the PV and MV + PV = modelicaId[H_ID].get_value() + MV = Kc * (SP - PV) + time.sleep(0.1) + modelicaId[U_ID].set_value(MV) + + # print("H value is: ", modelicaId[H_ID].get_value()) + # print("Controller effort is: ", modelicaId[U_ID].get_value()) + # time.sleep(0.1) + # print("="*40) + + except KeyboardInterrupt: + print("Stopping sequence!") + + finally: + print("Done!") + client.disconnect() diff --git a/P-Controller/tankRPiModel.mo b/P-Controller/tankRPiModel.mo new file mode 100644 index 0000000..c3eff19 --- /dev/null +++ b/P-Controller/tankRPiModel.mo @@ -0,0 +1,8 @@ +model tankRPiModel + parameter Real K = 1 "Plant gain"; + parameter Real tau = 2 "Plant time const"; + Real y(start = 0) "Plant output"; + input Real u "Controller effort from the client"; +equation + tau * der(y) + y = K * u; +end tankRPiModel; diff --git a/P-Controller/tankRPiModel_res.mat b/P-Controller/tankRPiModel_res.mat Binary files differnew file mode 100644 index 0000000..e8e5389 --- /dev/null +++ b/P-Controller/tankRPiModel_res.mat diff --git a/P-Controller/tankSysOMP.mo b/P-Controller/tankSysOMP.mo new file mode 100644 index 0000000..5c9a849 --- /dev/null +++ b/P-Controller/tankSysOMP.mo @@ -0,0 +1,13 @@ +model tankSysOMP + parameter Real K = 1 "Plant gain"; + parameter Real Kc = 0.2 "Controller gain"; + parameter Real r = 1 "Setpoint"; + parameter Real tau = 2 "Plant time const"; + Real y(start = 0) "Plant output"; + Real error "Deviation from the setpoint"; + Real u "Controller effort"; +equation + error = r - y; + Kc * error = u; + tau * der(y) + y = K * u; +end tankSysOMP; diff --git a/PI-Controller/tankRPiModel.mo b/PI-Controller/tankRPiModel.mo new file mode 100644 index 0000000..f69ce63 --- /dev/null +++ b/PI-Controller/tankRPiModel.mo @@ -0,0 +1,8 @@ +model tankRPiModel + parameter Real K = 2 "Plant gain"; + parameter Real tau = 2 "Plant time const"; + Real y(start = 0) "Plant output"; + input Real u "Controller effort from the client"; +equation + tau * der(y) + y = K * u; +end tankRPiModel; diff --git a/PI-Controller/tankSysOMPI.mo b/PI-Controller/tankSysOMPI.mo new file mode 100644 index 0000000..a050cec --- /dev/null +++ b/PI-Controller/tankSysOMPI.mo @@ -0,0 +1,16 @@ +model tankSysOMPI + parameter Real K = 2 "Plant gain"; + parameter Real Kc = 0.2 "Controller gain"; + parameter Real r = 1 "Setpoint"; + parameter Real tau = 2 "Plant time const"; + parameter Real Ti = 5 "Integral time const"; + Real y(start = 0) "Plant output"; + Real error "Deviation from the setpoint"; + Real u "Controller effort"; + Real x "state variable for controller"; +equation + error = r - y; + der(x) = error / Ti; + Kc * (error + x) = u; + tau * der(y) + y = K * u; +end tankSysOMPI; |