diff --git a/SQLite/create_SQLite_db.sql b/SQLite/create_SQLite_db.sql index 6dde8ec..e2e1f46 100644 --- a/SQLite/create_SQLite_db.sql +++ b/SQLite/create_SQLite_db.sql @@ -1,11 +1,10 @@ CREATE TABLE IF NOT EXISTS Event_List ( id INTEGER PRIMARY KEY, - device_name TEXT, + alarmID INTEGER, type TEXT, cond TEXT, value REAL, datetime TIMESTAMP, - tag TEXT, stroke_number INTEGER ); diff --git a/MySQL/create_MySQL_db.sql b/create_MySQL_db.sql similarity index 98% rename from MySQL/create_MySQL_db.sql rename to create_MySQL_db.sql index 939e79c..ad90619 100644 --- a/MySQL/create_MySQL_db.sql +++ b/create_MySQL_db.sql @@ -2,12 +2,11 @@ CREATE DATABASE IF NOT EXISTS poconsole; CREATE TABLE IF NOT EXISTS poconsole.Event_List ( id int(11) NOT NULL AUTO_INCREMENT, - device_name varchar(64), + alarmID int(11), type varchar(64), cond varchar(64), value float, datetime datetime, - tag varchar(64), stroke_number int(11), PRIMARY KEY (id) ); diff --git a/MySQL/dataLogger.py b/dataLogger_MySQL.py similarity index 100% rename from MySQL/dataLogger.py rename to dataLogger_MySQL.py diff --git a/SQLite/dataLogger.py b/dataLogger_SQLite.py similarity index 75% rename from SQLite/dataLogger.py rename to dataLogger_SQLite.py index 04b6402..cdec16a 100644 --- a/SQLite/dataLogger.py +++ b/dataLogger_SQLite.py @@ -3,7 +3,7 @@ ''' Created on Oct 1, 2014 -@author: PJMcdona +@author: Patrick McDonagh ''' # import csv @@ -12,6 +12,7 @@ import time import sqlite3 as lite from pycomm.ab_comm.clx import Driver as ClxDriver # import logging +from tag.tag_sqlite import Tag import traceback con = lite.connect("/mnt/usb/data.db") @@ -32,11 +33,6 @@ def readConfig(): def readTag(addr, tag): - # logging.basicConfig( - # filename="clx.log", - # format="%(levelname)-10s %(asctime)s %(message)s", - # level=logging.DEBUG - # ) time.sleep(0.01) c = ClxDriver() if c.open(addr): @@ -48,7 +44,7 @@ def readTag(addr, tag): print("ERROR RETRIEVING TAG: {}".format(tag)) err = c.get_status() c.close() - print err + print traceback.print_exc() pass c.close() @@ -91,58 +87,7 @@ def checkDateInDB(da): con.commit() -class Tag(): - global readTag, con - - def __init__(self, name, tag, data_type, change_threshold, guarantee_sec, db_id, mapFn=None): - self.name = name - self.tag = tag - self.data_type = data_type - self.value = None - self.last_value = None - self.guarantee_sec = guarantee_sec - self.chg_threshold = change_threshold - self.last_send_time = 0 - self.mapFn = mapFn - self.db_id = db_id - - def read(self, forceSend): - time.sleep(0.01) - if self.tag: - v = readTag(PLC_IP_ADDRESS, self.tag) - if v: - if self.data_type == 'BOOL' or self.data_type == 'STRING': - val = v[0] - if self.mapFn: - val = self.mapFn[val] - if (self.last_send_time == 0) or (self.value is None) or not (self.value == val) or ((time.time() - self.last_send_time) > self.guarantee_sec) or (forceSend): - self.last_value = self.value - self.value = val - return True - else: - return False - else: - if (self.last_send_time == 0) or (self.value is None) or (abs(self.value - v[0]) > self.chg_threshold) or ((time.time() - self.last_send_time) > self.guarantee_sec) or (forceSend): - self.last_value = self.value - self.value = v[0] - return True - else: - return False - else: - return False - return False - - def sendToDB(self): - query = "INSERT INTO tag_vals (dtime, tagID, val) VALUES ({}, {}, {})".format(time.time(), self.db_id, self.value) - print query - with con: - cur = con.cursor() - cur.execute(query) - con.commit() - - class Status(Tag): - def sendToDB(self): query = "INSERT INTO run_status (dtime, status) VALUES ({}, '{}')".format(time.time(), self.value) print query @@ -151,72 +96,6 @@ class Status(Tag): cur.execute(query) con.commit() self.last_send_time = time.time() - - -class AnalogAlarm(): - def __init__(self, name, tag): - self.name = name - self.tag = tag - self.alarm = False - self.warning = False - self.lastAlarmCheckVal = False - self.lastWarningCheckVal = False - - def checkStatus(self, stroke_number): - global readTag, PLC_IP_ADDRESS, maps, con - condition = '' - - self.alarm = readTag(PLC_IP_ADDRESS, '{}.Alarm'.format(self.tag))[0] > 0 - alarmChanged = not (self.alarm == self.lastAlarmCheckVal) - - self.warning = readTag(PLC_IP_ADDRESS, '{}.Warning'.format(self.tag))[0] > 0 - warningChanged = not (self.warning == self.lastWarningCheckVal) - - if (alarmChanged and self.alarm) or (warningChanged and self.warning): - condition = maps['conditionMap'][readTag(PLC_IP_ADDRESS, '{}.Alarm_Code'.format(self.tag))[0]] - value = readTag(PLC_IP_ADDRESS, '{}.Alarm_Value'.format(self.tag))[0] - triggerType = "Alarm" - if warningChanged: - triggerType = 'Warning' - iQuery = "INSERT INTO Event_List (device_name, type, cond, value, datetime, tag, stroke_number) VALUES ('{0}', '{1}', '{2}', {3}, '{4}', '{5}', {6});".format( - self.name, triggerType, condition, value, time.time(), self.tag, stroke_number) - print iQuery - with con: - cur = con.cursor() - cur.execute(iQuery) - con.commit() - - if warningChanged: - self.lastWarningCheckVal = self.warning - - if alarmChanged: - self.lastAlarmCheckVal = self.alarm - - -class bitAlarm(): - def __init__(self, name, tag, condition): - self.name = name - self.tag = tag - self.condition = condition - self.status = False - self.lastStatusCheckVal = False - - def checkStatus(self, stroke_number): - global readTag, PLC_IP_ADDRESS, con - - self.status = readTag(PLC_IP_ADDRESS, self.tag)[0] > 0 - statusChanged = not (self.status == self.lastStatusCheckVal) - - if statusChanged and self.status: - value = readTag(PLC_IP_ADDRESS, '{}.Alarm_Value'.format(self.tag))[0] - iQuery = "INSERT INTO Event_List (device_name, type, cond, value, datetime, tag, stroke_number) VALUES ('{0}', '{1}', '{2}', {3}, '{4}', '{5}', {6});".format( - self.name, 'Info', self.condition, 0.0, time.time(), self.tag, stroke_number) - print iQuery - with con: - cur = con.cursor() - cur.execute(iQuery) - con.commit() - if statusChanged: self.lastStatusCheckVal = self.status @@ -303,15 +182,15 @@ def setupTags(): with con: cur = con.cursor() - query = "SELECT c.alarm_class as class, a.name as name, a.tag as tag, a.condition as condition FROM alarms a JOIN alarm_classes c ON a.class = c.id;" + query = "SELECT c.alarm_class as class, a.name as name, a.tag as tag, a.condition as condition, t.id as id FROM alarms a JOIN alarm_classes c ON a.class = c.id;" cur.execute(query) alarms = cur.fetchall() for x in alarms: # 0: class, 1: name, 2: tag, 3: condition if str(x[0]) == 'analog': - safety_tags[x[1]] = AnalogAlarm(str(x[1]), str(x[2])) + safety_tags[x[1]] = AnalogAlarm(str(x[1]), str(x[2]), int(x[4]), device_type="CLX", ip_address=PLC_IP_ADDRESS) elif str(x[0]) == 'bit': - bit_tags[x[1]] = bitAlarm(str(x[1]), str(x[2]), str(x[3])) + bit_tags[x[1]] = bitAlarm(str(x[1]), str(x[2]), str(x[3]), int(x[4]), device_type="CLX", ip_address=PLC_IP_ADDRESS) print('===== STROKE TAGS =====') for t in stroke_tags: @@ -394,15 +273,13 @@ def main(): while True: try: - if status.read(False): - status.sendToDB() + status.read("test") ############# # CARD DATA # ############# EOS = readTag(PLC_IP_ADDRESS, "End_Of_Stroke")[0] - stroke_tags['card_id'].read(False) - + stroke_tags['card_id'].read('test') if (EOS and not (last_stroke == stroke_tags['card_id'].value)): sData = {} last_stroke = stroke_tags['card_id'].value @@ -442,9 +319,7 @@ def main(): for hist in history_tags: h = history_tags[hist] - if h.read(False): - h.sendToDB() - h.last_send_time = time.time() + h.read("test") ############## # TAPER DATA #