From 7d1f9ca8e92f9277cc415f9d26a47137261d1af8 Mon Sep 17 00:00:00 2001 From: Nico Melone Date: Wed, 31 Jul 2024 13:56:47 -0500 Subject: [PATCH] updates 2024-07-31 --- .DS_Store | Bin 26628 -> 28676 bytes abbflow/.DS_Store | Bin 6148 -> 6148 bytes advvfdipp/.DS_Store | Bin 6148 -> 6148 bytes dualactuator/.DS_Store | Bin 6148 -> 6148 bytes piflow/modbusTester.py | 17 +- plcfreshwater/.DS_Store | Bin 8196 -> 10244 bytes plcfreshwater/Tags.py | 63 ++++--- plcfreshwater/plcfreshwater.py | 1 + plcfreshwater/reset lifetime/update_values.py | 173 ++++++++++++++++++ 9 files changed, 222 insertions(+), 32 deletions(-) create mode 100644 plcfreshwater/reset lifetime/update_values.py diff --git a/.DS_Store b/.DS_Store index a4b1fa6aed99d11e810cc2e90729cb23f1e814ba..cbbb4f623b861c62d8f2e626c388facc213c7595 100644 GIT binary patch delta 2239 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 delta 78 zcmZoMXfc=|#>CJzu~2NHo+2aD!~pBb1|lqz`I%%VA7K*Q?8rP0{}w06T|=j diff --git a/advvfdipp/.DS_Store b/advvfdipp/.DS_Store index 544825afc0f5237070ee02cfac930a90f0ecb978..7f3c5acc03d4c11f79db479c48d39fbdc9974e62 100644 GIT binary patch delta 177 zcmZoMXfc@J&&azmU^g=(?_?g9$&9-uFJLLul&Y>aGBUEzQ82PFt<_PeHZ(Ff*HJJt zHL9)UCj$cm&*Vl{;mOJ@HH_OQFJLKD6R)l|H?-7IurRIFQK+`C zGz2ou4Qp#TIYgE9t%KsTb8_?YJ11MQ$}@INu4R>)T*9in*`4hGB)qu~2NHo+2aL#DLw4m>3z^Ci5`fOv_0(3{K9^EnonHwgW(lnIVxO zhoK}l-^C>>T_YKzD5Z$oQRk VGQWr=2O|Rm5HT=p4iMSG3;=cHDvAIA delta 68 zcmZoMXfc=|#>B`mu~2NHo+2aD#DLwC4MbQb^D|xB9Ll_jWn)7D<7Rdaeh#3T&56w4 WnJ4p$SaL7`0V4wg)8+t?EzAIn5)mc< diff --git a/piflow/modbusTester.py b/piflow/modbusTester.py index 96b8e9c..a7d4725 100644 --- a/piflow/modbusTester.py +++ b/piflow/modbusTester.py @@ -6,8 +6,15 @@ address = 123 instrument = minimalmodbus.Instrument('/dev/ttyS0', address) #device, modbus slave address instrument.debug = True -try: - value = instrument.read_float(599) #register -1 for float - print("Value: {}".format(value)) -except Exception as e: - print("Error: {}".format(e)) +for _ in range(3): + try: + value = instrument.read_float(3873) #register -1 for float + print("Flow Rate from Flow Meter: {}".format(value)) + except Exception as e: + print("Error: {}".format(e)) + + try: + value = instrument.read_float(784) #register -1 for float + print("Frequency from Drive: {}".format(value)) + except Exception as e: + print("Error: {}".format(e)) diff --git a/plcfreshwater/.DS_Store b/plcfreshwater/.DS_Store index 64598a235570399cd66c6818d0195a24a4ecd26d..f29a40b6c47f584a0b4e55682721a9454e94adf5 100644 GIT binary patch literal 10244 zcmeHMTWl0n829lgK3O-;l)HB^ubHKkf8XVb7t$dT?#%Bc$l-9 z^Plsd|2t>qJO4j(&RGD!*0k0D5CQ;+E+&;?%JL-E&aMe5;Av))M8X4Dpo0lZAPEO1 zSo;c}0iOY%0iOY%0iS^zfdTqvvm{Lu($9ScdN?Dv2H z1GM9JVL!OzFmH{+lz>L(0~tcZNk$+>V>(pg=LKW2SUmyDMlw0hq>%^cr$Z_)_OWr; z0si+&ba28R%ArSfh*F&hW>n=NC@?_wxf7xg)+Fmagx3i@2t!0K>mx5o zd_s@qOlXOR(+Lxzo($@Vl?_OMK9)LQ6MNOz*pQR-IQk%#G!4hCum1uA1%*?l7D+|Y zG-+qopgq*(M%}d28cl6ywQib#ShgIEZ8h|vh*HsJTW-{_^b`jenocG=dJRjnhg$8l zr8ykiB^sol6pSd92M;zbU0D}uXlguE7dqI`*hG~TjrE5P1*MracQkK_>@^dX%{+z@ zdLI{pX4(5P%U)2Prgrzpy%A+bhA7&U zbPd~bw(2Q|WJD=-h{}$*ZEa5Jti3mGo9Tq*M3l04)QqRisH?Y_W|#4R?)16(ewUT{ z9XsW=al?qBq#b>WPIg8{ZzpS~&!Fy@S;Z(fqJY8U#WSmJsaddi>5A1YYu9fanO;(= z$Z~l_Z^m$pn5l1zI&t073~Qig$k5!uewruCHTD>KDi|yaG<93igg&B_lunm6WqWzmD{LZm5O9)@X)nr@VXa zq(|AtI&9H2{veD+RlRSEBq^WMd>B^7ph%(V6#*mFgcpek;PeG+!u&--DhVp-y%C0c zUSl==&w+#!8WAed}C_B0!nqRp-s8YNs+)RI6(1$p20#0bZ4>>KlR- zQ%ZqXt!<<#ii+H{DoD|#6pmD?vuCZA?~)Z@(H-=9YHO#S&M4CVcigw(LpV*2J3@~8 zJ^Tni!zGl+S*tLF^Kd@7Yb`Fu<+y?zb`^KmwYUyD$Yr~+2e)D$_G271)Nud}?zS#> z+hKeN597o51U`vR;nVmG9>eGH1$+@-B1b-s@8WyooO6BFErrCBS8~qWWx~NfpR<}n zpRi@Zqz;|1|64pLm)(-G_OPcL7LvnB b&*3D+Y5q0;Gr-^f`}_avbxwAJ?En7-f8&4J delta 245 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD7G!A4ToZP(pE}$tuz{m)p8F-;IjOv~& zD5NksNZ6c-{WF+ZAj!j#ATc*!)!xI7AOVrw{1lg@octu94it&WHzfHO1ttp!DNg2) tDxQ2u#eQRjFtZ>t#AFF>AngkB!N$Vx%#-<50y%(A0Qrkyb3D%+W&l4xGtdA4 diff --git a/plcfreshwater/Tags.py b/plcfreshwater/Tags.py index 42add7b..57ef4bd 100644 --- a/plcfreshwater/Tags.py +++ b/plcfreshwater/Tags.py @@ -1,33 +1,42 @@ from Channel import PLCChannel, ModbusChannel from plcfreshwater import PLC_IP_ADDRESS -tags = [ - PLCChannel(PLC_IP_ADDRESS, "scaled_flow_meter","Scaled_Flow_Meter","REAL", 10, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "scaled_pressure_transducer","Scaled_Pressure_Transducer","REAL", 3, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "raw_hand_input","Raw_Hand_Input","BOOL", 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_auto_input","Raw_Auto_Input","BOOL", 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_run_status","Raw_Run_Status","BOOL", 1, 3600, plc_type="Micro800", map_={0: "Stopped", 1: "Running", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_local_start","Raw_Local_Start","BOOL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "lifetime_flow_meter_gal","Lifetime_Flow_Meter_Gal","REAL", 1000, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "spt_flow_meter_unit","SPT_Flow_Meter_Unit","BOOL", 0, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "raw_overload_status", "Raw_Overload_Status", "BOOL", 0, 3600, plc_type="Micro800", map_={0: "Good", 1: "Down on Overload Tripped", None: "N/A"}) +tags = [ + PLCChannel(PLC_IP_ADDRESS, "scaled_flow_meter", + "Scaled_Flow_Meter", "REAL", 10, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "scaled_pressure_transducer", + "Scaled_Pressure_Transducer", "REAL", 3, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "raw_hand_input", "Raw_Hand_Input", "BOOL", + 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_auto_input", "Raw_Auto_Input", "BOOL", + 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_run_status", "Raw_Run_Status", "BOOL", 1, + 3600, plc_type="Micro800", map_={0: "Stopped", 1: "Running", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_local_start", "Raw_Local_Start", + "BOOL", 1, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "lifetime_flow_meter_gal", + "Lifetime_Flow_Meter_Gal", "REAL", 1000, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "spt_flow_meter_unit", + "SPT_Flow_Meter_Unit", "BOOL", 0, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "raw_overload_status", "Raw_Overload_Status", "BOOL", 0, 3600, + plc_type="Micro800", map_={0: "Good", 1: "Down on Overload Tripped", None: "N/A"}) ] tags_totalizer = [ - PLCChannel(PLC_IP_ADDRESS, "scaled_flow_meter","Scaled_Flow_Meter","REAL", 10, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "scaled_pressure_transducer","Scaled_Pressure_Transducer","REAL", 3, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "raw_hand_input","Raw_Hand_Input","BOOL", 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_auto_input","Raw_Auto_Input","BOOL", 1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_run_status","Raw_Run_Status","BOOL", 1, 3600, plc_type="Micro800", map_={0: "Stopped", 1: "Running", None: "N/A"}), - PLCChannel(PLC_IP_ADDRESS, "raw_local_start","Raw_Local_Start","BOOL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_yesterday_gal","Totalizer_FM_Yesterday_Total_Gal","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_day_gal","Totalizer_FM_Current_Day_Total_Gal","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_last_month_gal","Totalizer_FM_Last_Month_Gal","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_month_gal","Totalizer_FM_Current_Month_Gal","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_yesterday_bbls","Totalizer_FM_Yesterday_Total_BBLs","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_day_bbls","Totalizer_FM_Current_Day_Total_BBLs","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_last_month_bbls","Totalizer_FM_Last_Month_BBLs","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "total_fm_month_bbls","Totalizer_FM_Current_Month_BBLs","REAL", 1, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "spt_flow_meter_unit","SPT_Flow_Meter_Unit","BOOL", 0, 3600, plc_type="Micro800"), - PLCChannel(PLC_IP_ADDRESS, "raw_overload_status", "Raw_Overload_Status", "BOOL", 0, 3600, plc_type="Micro800", map_={0: "Good", 1: "Down on Overload Tripped", None: "N/A"}) -] \ No newline at end of file + PLCChannel(PLC_IP_ADDRESS, "scaled_flow_meter","Scaled_Flow_Meter", "REAL", 10, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "scaled_pressure_transducer","Scaled_Pressure_Transducer", "REAL", 3, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "raw_hand_input", "Raw_Hand_Input", "BOOL",1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_auto_input", "Raw_Auto_Input", "BOOL",1, 7200, plc_type="Micro800", map_={0: "Off", 1: "On", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_run_status", "Raw_Run_Status", "BOOL", 1,3600, plc_type="Micro800", map_={0: "Stopped", 1: "Running", None: "N/A"}), + PLCChannel(PLC_IP_ADDRESS, "raw_local_start", "Raw_Local_Start","BOOL", 1, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_yesterday_gal","Totalizer_FM_Yesterday_Total_Gal", "REAL", 500, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_day_gal","Totalizer_FM_Current_Day_Total_Gal", "REAL", 500, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_last_month_gal","Totalizer_FM_Last_Month_Gal", "REAL", 500, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_month_gal","Totalizer_FM_Current_Month_Gal", "REAL", 500, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_yesterday_bbls","Totalizer_FM_Yesterday_Total_BBLs", "REAL", 100, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_day_bbls","Totalizer_FM_Current_Day_Total_BBLs", "REAL", 100, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_last_month_bbls","Totalizer_FM_Last_Month_BBLs", "REAL", 100, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "total_fm_month_bbls","Totalizer_FM_Current_Month_BBLs", "REAL", 100, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "spt_flow_meter_unit","SPT_Flow_Meter_Unit", "BOOL", 0, 3600, plc_type="Micro800"), + PLCChannel(PLC_IP_ADDRESS, "raw_overload_status", "Raw_Overload_Status", "BOOL", 0, 3600,plc_type="Micro800", map_={0: "Good", 1: "Down on Overload Tripped", None: "N/A"}) +] diff --git a/plcfreshwater/plcfreshwater.py b/plcfreshwater/plcfreshwater.py index 2b0c205..a2a19aa 100644 --- a/plcfreshwater/plcfreshwater.py +++ b/plcfreshwater/plcfreshwater.py @@ -120,6 +120,7 @@ class start(threading.Thread, deviceBase): from Tags import tags, tags_totalizer if PERSIST["Totalizers"]: CHANNELS = tags_totalizer + self.totalizing = True else: CHANNELS = tags while True: diff --git a/plcfreshwater/reset lifetime/update_values.py b/plcfreshwater/reset lifetime/update_values.py new file mode 100644 index 0000000..555cd34 --- /dev/null +++ b/plcfreshwater/reset lifetime/update_values.py @@ -0,0 +1,173 @@ +from pycomm.ab_comm.clx import Driver as ClxDriver +from pycomm.cip.cip_base import CommError, DataError +import time +import sys +import json +TAG_DATAERROR_SLEEPTIME = 5 + + +def read_tag(addr, tag, plc_type="CLX"): + #Read a tag from the PLC. + direct = plc_type == "Micro800" + clx = ClxDriver() + try: + if clx.open(addr, direct_connection=direct): + try: + val = clx.read_tag(tag) + clx.close() + return val + except DataError as err: + clx.close() + time.sleep(TAG_DATAERROR_SLEEPTIME) + print("Data Error during readTag({}, {}): {}".format(addr, tag, err)) + except CommError: + # err = c.get_status() + #clx.close() + print("Could not connect during readTag({}, {})".format(addr, tag)) + except AttributeError as err: + clx.close() + print("AttributeError during readTag({}, {}): \n{}".format(addr, tag, err)) + clx.close() + return False + + +def write_tag(addr, tag, val, plc_type="CLX"): + #Write a tag value to the PLC. + direct = plc_type == "Micro800" + clx = ClxDriver() + try: + if clx.open(addr, direct_connection=direct): + try: + initial_val = clx.read_tag(tag) + write_status = clx.write_tag(tag, val, initial_val[1]) + clx.close() + return write_status + except DataError as err: + clx_err = clx.get_status() + clx.close() + print("--\nDataError during writeTag({}, {}, {}, plc_type={}) -- {}\n{}\n".format(addr, tag, val, plc_type, err, clx_err)) + except CommError as err: + clx_err = clx.get_status() + print("--\nCommError during write_tag({}, {}, {}, plc_type={})\n{}\n--".format(addr, tag, val, plc_type, err)) + #clx.close() + return False + +ips = { + "000001000016": "192.168.1.216", + "000001000005": "192.168.1.205", + "000001000004": "192.168.1.204", + "000001000007": "192.168.1.207", + "000001000006": "192.168.1.206", + "000001000001": "192.168.1.201", + "000001000003": "192.168.1.203", + "000001000002": "192.168.1.202", + "000001000012": "192.168.1.212", + "000001000013": "192.168.1.213", + "000001000010": "192.168.1.210", + "000001000011": "192.168.1.211", + "000001000009": "192.168.1.209", + "000001000008": "192.168.1.208", + "000001000014": "192.168.1.214", + "000001000015": "192.168.1.215", + "000006000001": "192.168.1.217", + "000006000002": "192.168.1.218", + "000006000003": "192.168.1.219", + "000006000004": "192.168.1.221", + "000006000005": "192.168.1.220", + "000001000023": "192.168.1.223", + "000001000024": "192.168.1.224", + "000001000025": "192.168.1.225" +} +totals_to_fix = [ + { + "total_fm_last_month_gal": 585526.8125, + "total_fm_last_month_bbls": 13941.114583333334, + "name": "Windham 108-1", + "mac": "000001000005" + }, + { + "total_fm_last_month_gal": 432819.125, + "total_fm_last_month_bbls": 10305.217261904761, + "name": "Windham 108-6", + "mac": "000001000002" + }, + { + "total_fm_last_month_gal": 569190.8111801123, + "total_fm_last_month_bbls": 13552.162170955055, + "name": "Windham 108-5", + "mac": "000001000003" + }, + { + "total_fm_last_month_gal": 349503.8125, + "total_fm_last_month_bbls": 8321.519345238095, + "name": "Windham 107-1", + "mac": "000001000004" + }, + { + "total_fm_last_month_gal": 835251.983612061, + "total_fm_last_month_bbls": 19886.95199076336, + "name": "Windham 107-2", + "mac": "000001000008" + }, + { + "total_fm_last_month_gal": 455446.20678711, + "total_fm_last_month_bbls": 10843.957304455, + "name": "Windham 108-8", + "mac": "000001000009" + }, + { + "total_fm_last_month_gal": 589450.9773197174, + "total_fm_last_month_bbls": 14034.54707904089, + "name": "Windham 108-10", + "mac": "000001000010" + }, + { + "total_fm_last_month_gal": 1272923.0, + "total_fm_last_month_bbls": 30307.690476190477, + "name": "Windham 108-2", + "mac": "000001000011" + }, + { + "total_fm_last_month_gal": 642752.0, + "total_fm_last_month_bbls": 15303.619047619048, + "name": "Caden WW #3", + "mac": "000000000006" + }, + { + "total_fm_last_month_gal": 3431191.5, + "total_fm_last_month_bbls": 81695.03571428571, + "name": "Kate A2", + "mac": "000001000015" + }, + { + "total_fm_last_month_gal": 1197581.8099999998, + "total_fm_last_month_bbls": 28513.852619047615, + "name": "Barnett 24-1 PLC Fresh Water", + "mac": "000000000031" + }, + { + "total_fm_last_month_gal": 603957.6875, + "total_fm_last_month_bbls": 14379.94494047619, + "name": "Kelly #1 PLC Fresh Water", + "mac": "000001000023" + }, + { + "total_fm_last_month_gal": 1089152.125, + "total_fm_last_month_bbls": 25932.193452380954, + "name": "Kelly #2 PLC Fresh Water", + "mac": "000001000024" + }, + { + "total_fm_last_month_gal": 493207.21875, + "total_fm_last_month_bbls": 11743.029017857143, + "name": "Kelly #3 PLC Fresh Water", + "mac": "000001000025" + } +] +for x in totals_to_fix: + addr = ips.get(x['mac'], None) + if addr: + write_gal = write_tag(addr, "Totalizer_FM_Last_Month_Gal", x["total_fm_last_month_gal"], "Micro800" ) + write_bbl = write_tag(addr, "Totalizer_FM_Last_Month_BBLs", x["total_fm_last_month_bbls"], "Micro800" ) + print(x["name"], write_gal, write_bbl) +