From fe68e4e7e0cdb069934bc6c439be08f8fb53a80c Mon Sep 17 00:00:00 2001 From: sujunelee Date: Wed, 28 May 2025 14:37:03 +0900 Subject: [PATCH] Sujune: Upload --- config.json | 8 ++-- control.json | 20 +++++----- framework.yaml | 2 +- main.py | 103 ++++++++++++++++++++++++++++++------------------- 4 files changed, 79 insertions(+), 54 deletions(-) diff --git a/config.json b/config.json index c526714..c2028b4 100644 --- a/config.json +++ b/config.json @@ -6,8 +6,8 @@ ] }, "ref_zero_point": { - "oilInFlowRate": 4005, - "waterInFlowRate": 4000 + "oilInFlowRate": 3995, + "waterInFlowRate": 3984 }, "cdu_digital_list": { "valve1OpenStatus": [ @@ -164,11 +164,11 @@ "tank_pdu_list": { "pduTank1": [ 1, - "n" + "y" ], "pduTank2": [ 2, - "n" + "y" ], "pduTank3": [ 3, diff --git a/control.json b/control.json index f4e5e8f..9dd2dff 100644 --- a/control.json +++ b/control.json @@ -1,18 +1,18 @@ { + "cmd": "none", "get_data_interval": 2, - "set_zero_flow": "n", - "valve1": "Off", - "valve2": "Off", "inverter": { "inverter1": "Off", - "inverter1Frq": 50, - "inverter1Acc": 5.0, - "inverter1Dec": 10.0, + "inverter1Acc": 10, + "inverter1Dec": 5, + "inverter1Frq": 40, "inverter2": "Off", - "inverter2Frq": 40, - "inverter2Acc": 5.0, - "inverter2Dec": 10.0 + "inverter2Acc": 10, + "inverter2Dec": 5, + "inverter2Frq": 20 }, "mode": "auto", - "cmd": "none" + "set_zero_flow": "n", + "valve1": "Off", + "valve2": "Off" } \ No newline at end of file diff --git a/framework.yaml b/framework.yaml index 4420f3f..4a20c6e 100644 --- a/framework.yaml +++ b/framework.yaml @@ -8,5 +8,5 @@ spec: package: requirements.txt # 설치할 Python 패키지 정보 파일입니다.(기본 값은 requirement.txt 입니다.) runtime: python3.9 stackbase: - tagName: v2.0.4 # Stackbase(gitea)에 릴리즈 태그명 입니다. + tagName: v2.0.5 # Stackbase(gitea)에 릴리즈 태그명 입니다. repoName: aquarack-sensor-collector # Satackbase(gitea)에 저장될 저장소 이릅니다. diff --git a/main.py b/main.py index c8a06b1..23b323f 100644 --- a/main.py +++ b/main.py @@ -23,6 +23,7 @@ def get_modbus(evt, serial_obj): valve_status = [False] * 8 pre_dict = {} init_flag = 0 + frq1, acc1, dec1, frq2, acc2, dec2 = 0, 0, 0, 0, 0, 0 while isThread: evt.wait() @@ -84,7 +85,7 @@ def get_modbus(evt, serial_obj): pub_dict[j] = ((cdu_analog.registers[i] - 4000) / 16000) * 100 elif j == 'oilOutTemp' or j == 'waterOutTemp': scale = ((cdu_analog.registers[i] - 4000) / 16000) # need to edit for temperature sensor - pub_dict[j] = (scale * 100) - 20 + pub_dict[j] = (scale * 100) elif j == 'oilInPress' or j == 'waterInPress': pub_dict[j] = ((cdu_analog.registers[i] - 4000) / 16000) # need to edit for pressure sensor @@ -107,7 +108,14 @@ def get_modbus(evt, serial_obj): inverter_status[2] = 'running' elif run_status & 0x08: inverter_status[2] = 'error' - + except Exception as e: + inverter_status[0] = -9999 + inverter_status[1] = 'CLOST' + inverter_status[2] = 'error' + print(f'Inverter Status Error: {e}') + + try: + # M100 res = client1.read_holding_registers(address=9, count=6, slave=11) inverter_status[3] = res.registers[0] / 100 # frequncy inverter_status[4] = get_inverter_errorcode(res.registers[5]) # errorcode @@ -118,12 +126,14 @@ def get_modbus(evt, serial_obj): inverter_status[5] = 'running' elif run_status & 0x08: inverter_status[5] = 'error' - - for i, j in enumerate(p_col): - pub_dict[j] = inverter_status[i] except Exception as e: + inverter_status[3] = -9999 + inverter_status[4] = 'CLOST' + inverter_status[5] = 'error' print(f'Inverter Status Error: {e}') + for i, j in enumerate(p_col): + pub_dict[j] = inverter_status[i] try: if control_data['mode'] == 'auto': if control_data['cmd'] == 'init': @@ -193,6 +203,17 @@ def get_modbus(evt, serial_obj): cmd_status = 'act1' cmd_sub_status = 'closeValve2' pub_dict['cmd'] = 'startAct1' + + elif cmd_sub_status == 'workingPump1': + if pub_dict['pump1StatusRunning'] == 'running': + cmd_status = 'none' + cmd_sub_status = 'workingPump1' + pub_dict['cmd'] = 'workingAct1' + control_data['cmd'] = 'none' + frq1 = int(control_data['inverter']['inverter1Frq'] * 100) + acc1 = int(control_data['inverter']['inverter1Acc'] * 10) + dec1 = int(control_data['inverter']['inverter1Dec'] * 10) + client1.write_registers(address=4, values=[frq1, 194, acc1, dec1], slave=10) elif cmd_sub_status == 'workingPump2': cmd_status = 'act1' @@ -235,10 +256,10 @@ def get_modbus(evt, serial_obj): cmd_sub_status = 'startPump1' elif cmd_sub_status == 'startPump1': - frq = int(control_data['inverter']['inverter1Frq'] * 100) - acc = int(control_data['inverter']['inverter1Acc'] * 10) - dec = int(control_data['inverter']['inverter1Dec'] * 10) - client1.write_registers(address=4, values=[frq, 194, acc, dec], slave=10) + frq1 = int(control_data['inverter']['inverter1Frq'] * 100) + acc1 = int(control_data['inverter']['inverter1Acc'] * 10) + dec1 = int(control_data['inverter']['inverter1Dec'] * 10) + client1.write_registers(address=4, values=[frq1, 194, acc1, dec1], slave=10) cmd_sub_status = 'startingPump1' elif cmd_sub_status == 'startingPump1': @@ -263,7 +284,18 @@ def get_modbus(evt, serial_obj): cmd_status = 'act2' cmd_sub_status = 'closeValve1' pub_dict['cmd'] = 'startAct2' - + + elif cmd_sub_status == 'workingPump2': + if pub_dict['pump2StatusRunning'] == 'running': + cmd_status = 'none' + cmd_sub_status = 'workingPump2' + pub_dict['cmd'] = 'workingAct2' + control_data['cmd'] = 'none' + frq2 = int(control_data['inverter']['inverter2Frq'] * 100) + acc2 = int(control_data['inverter']['inverter2Acc'] * 10) + dec2 = int(control_data['inverter']['inverter2Dec'] * 10) + client1.write_registers(address=4, values=[frq2, 194, acc2, dec2], slave=11) + elif cmd_sub_status == 'workingPump1': cmd_status = 'act2' cmd_sub_status = 'stopPump1' @@ -305,10 +337,10 @@ def get_modbus(evt, serial_obj): cmd_sub_status = 'startPump2' elif cmd_sub_status == 'startPump2': - frq = int(control_data['inverter']['inverter2Frq'] * 100) - acc = int(control_data['inverter']['inverter2Acc'] * 10) - dec = int(control_data['inverter']['inverter2Dec'] * 10) - client1.write_registers(address=4, values=[frq, 194, acc, dec], slave=11) + frq2 = int(control_data['inverter']['inverter2Frq'] * 100) + acc2 = int(control_data['inverter']['inverter2Acc'] * 10) + dec2 = int(control_data['inverter']['inverter2Dec'] * 10) + client1.write_registers(address=4, values=[frq2, 194, acc2, dec2], slave=11) cmd_sub_status = 'startingPump2' elif cmd_sub_status == 'startingPump2': @@ -332,39 +364,32 @@ def get_modbus(evt, serial_obj): elif control_data['mode'] == 'manual': if control_data != pre_dict: pub_dict['cmd'] = 'manual' - if control_data['inverter']['inverter1'] == 'On' and cmd_status[0] == 0: - frq = int(control_data['inverter']['inverter1Frq'] * 100) - acc = int(control_data['inverter']['inverter1Acc'] * 10) - dec = int(control_data['inverter']['inverter1Dec'] * 10) - client1.write_registers(address=4, values=[frq, 194, acc, dec], slave=10) - cmd_status[0] = 1 - elif control_data['inverter']['inverter1'] == 'Off' and cmd_status[0] == 1: + # print(control_data) + if control_data['inverter']['inverter1'] == 'On': + frq1 = int(control_data['inverter']['inverter1Frq'] * 100) + acc1 = int(control_data['inverter']['inverter1Acc'] * 10) + dec1 = int(control_data['inverter']['inverter1Dec'] * 10) + client1.write_registers(address=4, values=[frq1, 194, acc1, dec1], slave=10) + elif control_data['inverter']['inverter1'] == 'Off': client1.write_registers(address=5, values=[193], slave=10) - cmd_status[0] = 0 - if control_data['inverter']['inverter2'] == 'On' and cmd_status[1] == 0: - frq = int(control_data['inverter']['inverter1Frq'] * 100) - acc = int(control_data['inverter']['inverter1Acc'] * 10) - dec = int(control_data['inverter']['inverter1Dec'] * 10) - client1.write_registers(address=4, values=[frq, 194, acc, dec], slave=10) - cmd_status[1] = 1 - elif control_data['inverter']['inverter2'] == 'Off' and cmd_status[1] == 1: - client1.write_registers(address=5, values=[193], slave=10) - cmd_status[1] = 0 + if control_data['inverter']['inverter2'] == 'On': + frq2 = int(control_data['inverter']['inverter2Frq'] * 100) + acc2 = int(control_data['inverter']['inverter2Acc'] * 10) + dec2 = int(control_data['inverter']['inverter2Dec'] * 10) + client1.write_registers(address=4, values=[frq2, 194, acc2, dec2], slave=11) + elif control_data['inverter']['inverter2'] == 'Off': + client1.write_registers(address=5, values=[193], slave=11) - if control_data['valve1'] == 'On' and cmd_status[2] == 0: + if control_data['valve1'] == 'On': valve_status[0] = True - cmd_status[2] = 1 - elif control_data['valve1'] == 'Off' and cmd_status[2] == 1: + elif control_data['valve1'] == 'Off': valve_status[0] = False - cmd_status[2] = 0 - if control_data['valve2'] == 'On' and cmd_status[3] == 0: + if control_data['valve2'] == 'On': valve_status[1] = True - cmd_status[3] = 1 - elif control_data['valve2'] == 'Off' and cmd_status[3] == 1: + elif control_data['valve2'] == 'Off': valve_status[1] = False - cmd_status[3] = 0 res = serial_obj.write_coils(address=0, values=valve_status, slave=5) else: