This commit is contained in:
Nico Melone
2023-06-03 11:41:53 -05:00
parent fe01435f0c
commit d8c7f7a518
44 changed files with 267198 additions and 904 deletions

BIN
.DS_Store vendored

Binary file not shown.

BIN
Pub_Sub/.DS_Store vendored

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -737,7 +737,7 @@
},
{
"ctrlName": "advvfdipp",
"dataType": "INT",
"dataType": "DINT",
"addr": "sts_PID_Control",
"readWrite": "rw",
"uploadType": "periodic",

View File

@@ -3,52 +3,71 @@ from common.Logger import logger
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot():
def reboot(reason="Rebooting for config file update"):
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
logger.info(reason)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
try:
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
logger.debug("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist while making folder: {e}")
try:
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
logger.debug("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist wihle making file: {e}")
def convertDStoJSON(ds):
j = dict()
try:
for x in ds:
j[x["key"]] = x["value"]
except Exception as e:
logger.error(f"Something went wrong in convertDStoJSON: {e}")
return j
def convertJSONtoDS(j):
d = []
try:
for key in j.keys():
d.append({"key": key, "value": j[key]})
except Exception as e:
logger.error(f"Something went wrong in convertJSONtoDS: {e}")
return d
def checkCredentialConfig():
logger.info("CHECKING CONFIG")
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
try:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.info(clouds)
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
try:
checkFileExist("creds.json")
except Exception as e:
logger.error(f"Error in checkFileExist: {e}")
with open(credspath, "r") as c:
try:
creds = json.load(c)
if creds:
logger.info("updating config with stored data")
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
@@ -57,11 +76,13 @@ def checkCredentialConfig():
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
except Exception as e:
logger.error(f"Error trying to load credentials from file: {e}")
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.info("updating stored file with new data")
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
@@ -79,22 +100,25 @@ def checkCredentialConfig():
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
except Exception as e:
logger.error(f"Somethign went wrong in checkCredentialConfig: {e}")
def checkParameterConfig(cfg):
logger.info("Checking Parameters!!!!")
try:
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.info("Opened param storage file")
logger.debug("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.info("equalizing params between cfg and stored")
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
@@ -107,8 +131,12 @@ def checkParameterConfig(cfg):
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.info("initializing param file with params in memory")
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
except Exception as e:
logger.error(f"Something went wrong in checkParameterConfig: {e}")
os.system(f'rm {paramspath}')
return cfg

View File

@@ -0,0 +1,308 @@
!
#system config
language English
hostname EdgeGateway
ip domain-name edgegateway.com.cn
clock timezone CST6CDT,M3.2.0/2,M11.1.0/2
service password-encryption
!
#log config
log persistent severity 7
!
#user config
username ASS privilege 15 password $1$EmiUWl8i$lO4gaFNPRI3xC9tJXSl7/0
!
enable password $1$kvwao0Sc$zzKGmDaqupdkXYaaObwJx/
!
#aaa config
!
#cron config
remote-login retry 20
!
#alarm config
!
#loopback config
interface loopback 1
ip address 127.0.0.1 255.0.0.0
!
!
#ethernet interface config
interface fastethernet 0/1
track l2-state
!
interface fastethernet 0/2
!
!
#Ethernet sub interface config
!
#cellular config
cellular 1 gsm profile 1 13997.mcs use-blank-dialno auto
cellular 1 gsm profile 2 ss01.vzwstatic use-blank-dialno auto
cellular 1 dial interval 10
cellular 1 signal interval 120
cellular 1 network auto
cellular 1 dual-sim enable
cellular 1 dual-sim main 1
cellular 1 dual-sim policy redial 5
cellular 1 sms mode text
cellular 1 sms interval 30
!
interface cellular 1
dialer profile 1
dialer profile 1 secondary
dialer timeout 120
dialer activate auto
ip address negotiated
ip mru 1500
ip mtu 1500
ppp ipcp dns request
ppp keepalive 55 5
!
!
#dot11 config
dot11 ssid Amerus_Camera_Trailer
authentication key-management wpa 2
guest-mode
wpa-psk ascii $AES$9EC22D9DED6D382D9D3BEE14595D4E26
!
interface dot11radio 1
ssid Amerus_Camera_Trailer
encryption mode ciphers aes-ccm
802.11n bandwidth 20
!
!
#bridge config
!
bridge 1
!
interface bridge 1
ip address 192.168.1.1 255.255.255.0
!
interface fastethernet 0/2
bridge-group 1
!
interface fastethernet 0/1
bridge-group 1
!
interface dot11radio 1
bridge-group 1
!
!
!
#dialer config
!
#ipsec config
crypto ipsec-daemon stop
!
#l2tp config
!
#openvpn config
!
#openvpn server config
!
#web config
ip web-access timeout 300
ip https server port 9191
ip https access enable
!
#device-manager config
device-manager enable
device-manager server iot.inhandnetworks.com
device-manager tls
device-manager account nmelone@henry-pump.com
device-manager location gps
!
#InConnect config
!
#Erlang config
erlang mode off
!
#telnet server config
no ip telnet server
no ip telnet access enable
!
#ssh server config
!
#dhcp-relay config
!
#dns-relay config
ip dns-relay server
!
#dhcp server config
interface bridge 1
ip dhcp-server enable
ip dhcp-server range 192.168.1.2 192.168.1.254
ip dhcp-server lease 1440
!
!
#dns config
!
#ip host config
!
#ddns config
!
#snmp config
#ovdp config
!
!
#dockerd config
!
#portainer config
!
#Azure IoT Edge config
!
#AWS IoT Greengrass config
!
#ntp server config
ntp master 2
ntp server 0.pool.ntp.org
ntp server 1.pool.ntp.org
ntp server 2.pool.ntp.org
ntp server 3.pool.ntp.org
!
!
#Telegraf config
!
#email config
!
#sntp client config
sntp-client
sntp-client server 0.pool.ntp.org port 123
sntp-client server 1.pool.ntp.org port 123
sntp-client server 2.pool.ntp.org port 123
sntp-client server 3.pool.ntp.org port 123
!
#gre config
!
#static route config
ip route 0.0.0.0 0.0.0.0 cellular 1 253
ip route 0.0.0.0 0.0.0.0 dot11radio 1 250
!
#rip config
!
!
#ospf config
!
!
#filtering config
!
#bgp config
!
!
#firewall config
!
!
interface cellular 1
ip access-group 192 admin
!
access-list 100 10 permit ip any any
access-list 101 10 permit ip any any
access-list 102 10 permit ip any any
access-list 192 10 permit tcp any any eq 443 log
access-list 192 20 deny tcp any any eq 80
access-list 192 30 deny tcp any any eq 23
access-list 192 40 deny tcp any any eq 22
access-list 192 50 deny tcp any any eq 53
access-list 192 60 deny udp any any eq 53
interface cellular 1
ip nat outside
!
interface bridge 1
ip nat inside
!
interface fastethernet 0/1
ip nat outside
!
!
ip snat inside list 101 interface fastethernet 0/1
ip snat inside list 100 interface cellular 1
ip dnat outside static tcp interface cellular 1 3200 192.168.1.200 80 description NVR
ip dnat outside static tcp interface cellular 1 3201 192.168.1.201 80 description Camera 1
ip dnat outside static tcp interface cellular 1 3202 192.168.1.202 80 description Camera 2
ip dnat outside static tcp interface cellular 1 3203 192.168.1.203 80 description Camera 3
ip dnat outside static tcp interface cellular 1 3204 192.168.1.204 80 description Camera 4
ip dnat outside static tcp interface cellular 1 7681 192.168.1.201 7681 description Camera Live
ip dnat outside static tcp interface cellular 1 3205 192.168.1.205 3205 description Ubiquiti
!
!
!
!
!
#tcp mss config
ip tcp adjust-mss 1360
!
!
!
#netwatcher config
!
!
#sla config
!
#track config
!
#vrrpd config
!
#backup config
!
#mroute config
!
#cert config
!
!
#cert enroll config
crypto key generate rsa general-keys modulus 1024
!
!
#dls config
!
#gps config
gps enable
!
#gps serial config
!
#gps server config
!
#gps client config
!
#Serial Configuration
serial 1
!
serial 2
!
!
#python config
python enable
python log username adm password $AES$BFA541FA10FA3B041CBA4412D12C52B8
python app 1 on
python appcmd 1 logsize 1
device_supervisor
quit
!
!
#Modbus IO Configuration
!
#traffic-stated config
interface cellular 1
traffic-stated statistic
!
!
#data-usage config
data-usage sim1
daily units MB
daily limit 35
monthly units GB
monthly limit 1
!
interface cellular 1
traffic-stated sim 1 data-usage sim1
traffic-stated sim 1 daily-action only-report
traffic-stated sim 1 monthly-action only-report
traffic-stated sim 1 monitoring
!
#end of configuration

File diff suppressed because one or more lines are too long

View File

@@ -16,12 +16,12 @@ def reboot():
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
logger.debug("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
logger.debug("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
@@ -38,21 +38,21 @@ def convertJSONtoDS(j):
return d
def checkCredentialConfig():
logger.info("CHECKING CONFIG")
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.info(clouds)
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
checkFileExist("creds.json")
with open(credspath, "r") as c:
creds = json.load(c)
if creds:
logger.info("updating config with stored data")
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
@@ -65,7 +65,7 @@ def checkCredentialConfig():
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.info("updating stored file with new data")
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
@@ -85,20 +85,24 @@ def checkCredentialConfig():
json.dump(creds,cw)
def checkParameterConfig(cfg):
logger.info("Checking Parameters!!!!")
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.info("Opened param storage file")
logger.debug("Opened param storage file")
try:
params = json.load(f)
except Exception as e:
logger.error(f"Params files error: {e}")
params = {}
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.info("equalizing params between cfg and stored")
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
@@ -111,7 +115,7 @@ def checkParameterConfig(cfg):
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.info("initializing param file with params in memory")
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
@@ -135,8 +139,8 @@ def getGPS():
lon_dec = lon_dec * -1
#lat_dec = round(lat_dec, 7)
#lon_dec = round(lon_dec, 7)
logger.info("HERE IS THE GPS COORDS")
logger.info(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
logger.debug("HERE IS THE GPS COORDS")
logger.debug(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
speedKnots = position_status["speed"].split(" ")
speedMPH = float(speedKnots[0]) * 1.151
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"latitude":f"{lat_dec:.8f}", "longitude":f"{lon_dec:.8f}", "speed": f"{speedMPH:.2f}"}}), __qos__)
@@ -146,8 +150,11 @@ def sendData(message,wizard_api):
#publish(__topic__, json.dumps(message), __qos__)
try:
checkCredentialConfig()
except Exception as e:
logger.error(f"Error in checkCredentialConfig: {e}")
try:
getGPS()
except:
logger.error("Could not get gps data!")
except Exception as e:
logger.error(f"Could not get gps data!: {e}")

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,18 @@
import requests
from common.Logger import logger
from mobiuspi_lib.cellular import Cellular
def ddns(message):
logger.debug(message)
try:
# Create a cellular instance
cellular = Cellular()
# Retrieve modem information
modem = cellular.get_network()
#print("get network: %s" % modem)
url= "https://nvghm399n8.execute-api.us-east-1.amazonaws.com/default/HPIoTDDNS?hostname=" + __topic__ + ".henrypump.cloud" + "&ip=" + modem[0].get("ip_addr")
requests.post(url)
except Exception as e:
logger.error(f"Error in cellular: {e}")

View File

@@ -0,0 +1,209 @@
import json, os
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from mobiuspi_lib.gps import GPS
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot():
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.debug("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.debug("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x["key"]] = x["value"]
return j
def convertJSONtoDS(j):
d = []
for key in j.keys():
d.append({"key": key, "value": j[key]})
return d
def checkCredentialConfig():
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
# Check if the configuration file exists
if not os.path.exists(cfgpath):
logger.error("Configuration file does not exist.")
return
try:
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.debug(clouds)
# Check if the clouds list is empty
if not clouds or len(clouds) == 0:
logger.error("Clouds list is empty.")
return
cloud_args = clouds[0].get("args")
# Check if the cloud arguments exist
if not cloud_args:
logger.error("Cloud arguments do not exist.")
return
# Check if the clientId, username, and password are missing or unknown
if (
not cloud_args.get("clientId")
or not cloud_args.get("username")
or not cloud_args.get("passwd")
or cloud_args["clientId"] == "unknown"
or cloud_args["username"] == "unknown"
or cloud_args["passwd"] == "unknown"
):
try:
checkFileExist("creds.json")
except Exception as e:
logger.error(f"Error in checkFileExist: {e}")
return
with open(credspath, "r") as c:
try:
creds = json.load(c)
if creds:
logger.debug("Updating config with stored data")
cloud_args["clientId"] = creds.get("clientId")
cloud_args["username"] = creds.get("userName")
cloud_args["passwd"] = creds.get("password")
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding="utf-8") as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
except Exception as e:
logger.error(f"Error trying to load credentials from file: {e}")
return
else:
# Assuming clouds is filled out, if data is different, assume someone typed in something new and store it
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.debug("Updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding="utf-8") as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
try:
creds = json.load(c)
except:
creds = {}
if creds:
if creds.get("clientId") != cloud_args["clientId"]:
creds["clientId"] = cloud_args["clientId"]
if creds.get("userName") != cloud_args["username"]:
creds["userName"] = cloud_args["username"]
if creds.get("password") != cloud_args["passwd"]:
creds["password"] = cloud_args["passwd"]
else:
creds = {
"clientId": cloud_args["clientId"],
"userName": cloud_args["username"],
"password": cloud_args["passwd"],
}
with open(credspath, "w") as cw:
json.dump(creds, cw)
except Exception as e:
logger.error(f"Something went wrong in checkCredentialConfig: {e}")
def checkParameterConfig(cfg):
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.debug("Opened param storage file")
try:
params = json.load(f)
except Exception as e:
logger.error(f"Params files error: {e}")
params = {}
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
def getGPS():
# Create a gps instance
gps = GPS()
# Retrieve GPS information
position_status = gps.get_position_status()
logger.debug("position_status: ")
logger.debug(position_status)
latitude = position_status["latitude"].split(" ")
longitude = position_status["longitude"].split(" ")
lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)
lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)
if latitude[2] == "S":
lat_dec = lat_dec * -1
if longitude[2] == "W":
lon_dec = lon_dec * -1
#lat_dec = round(lat_dec, 7)
#lon_dec = round(lon_dec, 7)
logger.debug("HERE IS THE GPS COORDS")
logger.debug(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
speedKnots = position_status["speed"].split(" ")
speedMPH = float(speedKnots[0]) * 1.151
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"latitude":f"{lat_dec:.8f}", "longitude":f"{lon_dec:.8f}", "speed": f"{speedMPH:.2f}"}}), __qos__)
def sendData(message,wizard_api):
logger.debug(message)
#publish(__topic__, json.dumps(message), __qos__)
try:
checkCredentialConfig()
except Exception as e:
logger.error(f"Error in checkCredentialConfig: {e}")
try:
getGPS()
except Exception as e:
logger.error(f"Could not get gps data!: {e}")

View File

@@ -0,0 +1,71 @@
import json, time, requests, base64
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from datetime import datetime as dt
from requests.adapters import HTTPAdapter, Retry
from requests.auth import HTTPDigestAuth
from requests.exceptions import ConnectionError, RequestException
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x.get("key")] = x.get("value")
return j
def getImage():
try:
logger.debug("made it to getImage")
params = convertDStoJSON(get_params())
logger.debug(params)
camera_ip = params.get("camera_ip").replace("_", ".")
port = params.get("port")
logger.debug(camera_ip)
with open('./snapshot.jpg', 'wb') as handle:
with requests.Session() as s:
retries = Retry(total = 10, backoff_factor=0.1, status_forcelist=[404,408, 500, 502, 503, 504])
s.mount('http://', HTTPAdapter(max_retries=retries))
resp = s.get("http://" + camera_ip + ":" + port + "/ISAPI/Streaming/channels/101/picture?videoResolutionWidth=352&videoResolutionHeight=288", auth=HTTPDigestAuth("ASS", "amerus@1903"), stream=True, timeout=120)
logger.debug(resp)
resp.raise_for_status() # Raise an exception for non-2xx status codes
for block in resp.iter_content(1024):
if not block:
break
handle.write(block)
with open('./snapshot.jpg', 'rb') as image_file:
encoded_string = base64.b64encode(image_file.read())
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"snapshot": encoded_string.decode("UTF-8"), "camera_error": "OK"}}), __qos__)
except RequestException as req_err:
logger.error("Request exception occurred while getting image from the camera.")
logger.error(req_err)
publish(
__topic__,
json.dumps({
"ts": (round(dt.timestamp(dt.now()) / 600) * 600) * 1000,
"values": {
"camera_error": f"Request exception occurred while getting image from the camera.\n\n{req_err}"
}
}),
__qos__
)
except ConnectionError as ce:
logger.error("Could not connect to Camera")
logger.error(ce)
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"camera_error": f"Could not connect to camera (ConnectionError), check camera connection and power\n\n{ce}"}}), __qos__)
except Exception as e:
logger.error(f"Something went wrong in getImage: {e}")
def sendSnapshot(message,wizard_api):
logger.debug(message)
try:
getImage()
except Exception as e:
logger.error("Could not get image")
logger.error(e)
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"camera_error": f"Could not connect to camera, check camera connection, power, IP Address\n\n{e}"}}), __qos__)

View File

@@ -1,209 +0,0 @@
{
"controllers": [
{
"protocol": "Virtual Controller",
"name": "cameratrailer",
"args": {},
"endpoint": "",
"samplePeriod": 0,
"expired": 0
},
{
"protocol": "Virtual Controller",
"name": "snapshot",
"args": {},
"endpoint": "",
"samplePeriod": 0,
"expired": 0
}
],
"measures": [
{
"name": "c",
"ctrlName": "cameratrailer",
"group": "default",
"uploadType": "periodic",
"dataType": "BIT",
"addr": "",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"bitMap": 0
},
{
"name": "s",
"ctrlName": "snapshot",
"group": "snapshot",
"uploadType": "periodic",
"dataType": "BIT",
"addr": "",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"bitMap": 0
}
],
"alarmLables": [
"default"
],
"alarms": [],
"groups": [
{
"name": "default",
"uploadInterval": 600
},
{
"name": "snapshot",
"uploadInterval": 3600
}
],
"misc": {
"maxAlarmRecordSz": 2000,
"logLvl": "INFO",
"coms": [
{
"name": "rs232",
"baud": 9600,
"bits": 8,
"stopbits": 1,
"parityChk": "n"
},
{
"name": "rs485",
"baud": 9600,
"bits": 8,
"stopbits": 1,
"parityChk": "n"
}
]
},
"clouds": [
{
"cacheSize": 10000,
"enable": 1,
"name": "default",
"type": "Standard MQTT",
"args": {
"host": "thingsboard.cloud",
"port": 1883,
"clientId": "camera-trailer-110",
"auth": 1,
"tls": 0,
"cleanSession": 0,
"mqttVersion": "v3.1.1",
"keepalive": 60,
"key": "",
"cert": "",
"rootCA": "",
"verifyServer": 0,
"verifyClient": 0,
"username": "assmqtt",
"passwd": "assmqtt@1903",
"authType": 1
}
}
],
"quickfaas": {
"genericFuncs": [],
"uploadFuncs": [
{
"qos": 1,
"funcName": "sendData",
"script": "# Enter your python code.\nimport json\nfrom common.Logger import logger\nfrom quickfaas.remotebus import publish\nfrom mobiuspi_lib.gps import GPS \n\ndef getGPS():\n # Create a gps instance\n gps = GPS()\n\n # Retrieve GPS information\n position_status = gps.get_position_status()\n logger.debug(\"position_status: \")\n logger.debug(position_status)\n latitude = position_status[\"latitude\"].split(\" \")\n longitude = position_status[\"longitude\"].split(\" \")\n lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)\n lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)\n if latitude[2] == \"S\":\n lat_dec = lat_dec * -1\n if longitude[2] == \"W\":\n lon_dec = lon_dec * -1\n #lat_dec = round(lat_dec, 7)\n #lon_dec = round(lon_dec, 7)\n logger.info(\"HERE IS THE GPS COORDS\")\n logger.info(f\"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}\")\n speedKnots = position_status[\"speed\"].split(\" \")\n speedMPH = float(speedKnots[0]) * 1.151\n publish(__topic__, json.dumps({\"latitude\":f\"{lat_dec:.8f}\", \"longitude\":f\"{lon_dec:.8f}\", \"speed\": f\"{speedMPH:.2f}\"}), __qos__)\n\ndef sendData(message,wizard_api):\n logger.debug(message)\n #publish(__topic__, json.dumps(message), __qos__)\n try:\n getGPS()\n except:\n logger.error(\"Could not get gps data!\")\n\n ",
"name": "sendData",
"trigger": "measure_event",
"topic": "v1/devices/me/telemetry",
"cloudName": "default",
"groups": [
"default"
],
"msgType": 0
},
{
"qos": 1,
"funcName": "sendSnapshot",
"script": "# Enter your python code.\nimport json\nfrom common.Logger import logger\nfrom quickfaas.remotebus import publish\nimport requests\nfrom requests.auth import HTTPDigestAuth\nfrom requests.exceptions import ConnectionError\nimport base64\n\ndef getImage():\n with open('./snapshot.jpg', 'wb') as handle:\n resp = requests.get(\"http://192.168.1.97:3097/cgi-bin/SnapshotJPEG?Resolution=640x360\", auth=HTTPDigestAuth(\"ASS\", \"amerus@1903\"), stream=True)\n for block in resp.iter_content(1024):\n if not block:\n break\n handle.write(block)\n \n with open('./snapshot.jpg', 'rb') as image_file:\n encoded_string = base64.b64encode(image_file.read())\n publish(__topic__, json.dumps({\"snapshot\": encoded_string.decode(\"UTF-8\"), \"camera_error\": \"OK\"}), __qos__)\n\n\ndef sendSnapshot(message,wizard_api):\n logger.debug(message)\n try:\n getImage()\n except ConnectionError as ce:\n logger.error(\"Could not connect to Camera\")\n logger.error(ce)\n publish(__topic__, json.dumps({\"camera_error\": f\"Could not connect to camera, check camera connection and power\\n\\n{ce}\"}), __qos__)\n except Exception as e:\n logger.error(\"Could not get image\")\n logger.error(e)\n publish(__topic__, json.dumps({\"camera_error\": f\"Could not connect to camera, check camera connection and power\\n\\n{e}\"}), __qos__)\n ",
"name": "snapshot",
"trigger": "measure_event",
"topic": "v1/devices/me/telemetry",
"cloudName": "default",
"groups": [
"snapshot"
],
"msgType": 0
}
],
"downloadFuncs": []
},
"labels": [
{
"key": "SN",
"value": "GF5022132004824"
},
{
"key": "MAC",
"value": "00:18:05:19:bf:b2"
}
],
"modbusSlave": {
"enable": 0,
"protocol": "Modbus-TCP",
"port": 502,
"slaveAddr": 1,
"int16Ord": "ab",
"int32Ord": "abcd",
"float32Ord": "abcd",
"maxConnection": 5,
"mapping_table": []
},
"iec104Server": {
"enable": 0,
"cotSize": 2,
"port": 2404,
"serverList": [
{
"asduAddr": 1
}
],
"kValue": 12,
"wValue": 8,
"t0": 15,
"t1": 15,
"t2": 10,
"t3": 20,
"maximumLink": 5,
"timeSet": 1,
"byteOrder": "abcd",
"mapping_table": []
},
"opcuaServer": {
"enable": 0,
"port": 4840,
"maximumLink": 5,
"securityMode": 0,
"identifierType": "String",
"mapping_table": []
},
"southMetadata": {},
"bindMetadata": {
"version": "",
"timestamp": ""
},
"bindConfig": {
"enable": 0,
"bind": {
"modelId": "",
"modelName": "",
"srcId": "",
"srcName": "",
"devId": "",
"devName": ""
},
"varGroups": [],
"variables": [],
"alerts": []
},
"version": "2.2.1"
}

View File

@@ -1,196 +0,0 @@
{
"controllers": [
{
"protocol": "Virtual Controller",
"name": "cameratrailer",
"args": {},
"endpoint": "",
"samplePeriod": 0,
"expired": 0
},
{
"protocol": "Virtual Controller",
"name": "snapshot",
"args": {},
"endpoint": "",
"samplePeriod": 0,
"expired": 0
}
],
"measures": [
{
"name": "c",
"ctrlName": "cameratrailer",
"group": "default",
"uploadType": "periodic",
"dataType": "BIT",
"addr": "",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"bitMap": 0
},
{
"name": "s",
"ctrlName": "snapshot",
"group": "snapshot",
"uploadType": "periodic",
"dataType": "BIT",
"addr": "",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"bitMap": 0
}
],
"alarms": [],
"groups": [
{
"name": "default",
"uploadInterval": 600
},
{
"name": "snapshot",
"uploadInterval": 3600
}
],
"misc": {
"maxAlarmRecordSz": 2000,
"logLvl": "INFO",
"coms": [
{
"name": "rs232",
"baud": 9600,
"bits": 8,
"stopbits": 1,
"parityChk": "n"
},
{
"name": "rs485",
"baud": 9600,
"bits": 8,
"stopbits": 1,
"parityChk": "n"
}
]
},
"clouds": [
{
"cacheSize": 10000,
"enable": 1,
"name": "default",
"type": "Standard MQTT",
"args": {
"host": "thingsboard.cloud",
"port": 1883,
"clientId": "camera-trailer",
"auth": 1,
"tls": 0,
"cleanSession": 0,
"mqttVersion": "v3.1.1",
"keepalive": 60,
"key": "",
"cert": "",
"rootCA": "",
"verifyServer": 0,
"verifyClient": 0,
"username": "assmqtt",
"passwd": "assmqtt@1903",
"authType": 1
}
}
],
"quickfaas": {
"genericFuncs": [],
"uploadFuncs": [
{
"qos": 1,
"funcName": "sendData",
"script": "# Enter your python code.\nimport json\nfrom common.Logger import logger\nfrom quickfaas.remotebus import publish\nfrom mobiuspi_lib.gps import GPS \n\ndef getGPS():\n # Create a gps instance\n gps = GPS()\n\n # Retrieve GPS information\n position_status = gps.get_position_status()\n logger.debug(\"position_status: \")\n logger.debug(position_status)\n latitude = position_status[\"latitude\"].split(\" \")\n longitude = position_status[\"longitude\"].split(\" \")\n lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)\n lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)\n if latitude[2] == \"S\":\n lat_dec = lat_dec * -1\n if longitude[2] == \"W\":\n lon_dec = lon_dec * -1\n #lat_dec = round(lat_dec, 7)\n #lon_dec = round(lon_dec, 7)\n logger.info(\"HERE IS THE GPS COORDS\")\n logger.info(f\"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}\")\n speedKnots = position_status[\"speed\"].split(\" \")\n speedMPH = float(speedKnots[0]) * 1.151\n publish(__topic__, json.dumps({\"latitude\":f\"{lat_dec:.8f}\", \"longitude\":f\"{lon_dec:.8f}\", \"speed\": f\"{speedMPH:.2f}\"}), __qos__)\n\ndef sendData(message,wizard_api):\n logger.debug(message)\n #publish(__topic__, json.dumps(message), __qos__)\n try:\n getGPS()\n except:\n logger.error(\"Could not get gps data!\")\n\n ",
"name": "sendData",
"trigger": "measure_event",
"topic": "v1/devices/me/telemetry",
"cloudName": "default",
"groups": [
"default"
],
"msgType": 0
},
{
"qos": 1,
"funcName": "sendSnapshot",
"script": "# Enter your python code.\nimport json\nfrom common.Logger import logger\nfrom quickfaas.remotebus import publish\nimport requests\nfrom requests.auth import HTTPDigestAuth\nfrom requests.exceptions import ConnectionError\nimport base64\n\ndef getImage():\n with open('./snapshot.jpg', 'wb') as handle:\n resp = requests.get(\"http://192.168.1.97:3097/cgi-bin/SnapshotJPEG?Resolution=640x360\", auth=HTTPDigestAuth(\"ASS\", \"amerus@1903\"), stream=True)\n for block in resp.iter_content(1024):\n if not block:\n break\n handle.write(block)\n \n with open('./snapshot.jpg', 'rb') as image_file:\n encoded_string = base64.b64encode(image_file.read())\n publish(__topic__, json.dumps({\"snapshot\": encoded_string.decode(\"UTF-8\"), \"camera_error\": \"OK\"}), __qos__)\n\n\ndef sendSnapshot(message,wizard_api):\n logger.debug(message)\n try:\n getImage()\n except ConnectionError as ce:\n logger.error(\"Could not connect to Camera\")\n logger.error(ce)\n publish(__topic__, json.dumps({\"camera_error\": f\"Could not connect to camera, check camera connection and power\\n\\n{ce}\"}), __qos__)\n except Exception as e:\n logger.error(\"Could not get image\")\n logger.error(e)\n publish(__topic__, json.dumps({\"camera_error\": f\"Could not connect to camera, check camera connection and power\\n\\n{e}\"}), __qos__)\n ",
"name": "snapshot",
"trigger": "measure_event",
"topic": "v1/devices/me/telemetry",
"cloudName": "default",
"groups": [
"snapshot"
],
"msgType": 0
}
],
"downloadFuncs": []
},
"modbusSlave": {
"enable": 0,
"protocol": "Modbus-TCP",
"port": 502,
"slaveAddr": 1,
"int16Ord": "ab",
"int32Ord": "abcd",
"float32Ord": "abcd",
"maxConnection": 5,
"mapping_table": []
},
"iec104Server": {
"enable": 0,
"cotSize": 2,
"port": 2404,
"serverList": [
{
"asduAddr": 1
}
],
"kValue": 12,
"wValue": 8,
"t0": 15,
"t1": 15,
"t2": 10,
"t3": 20,
"maximumLink": 5,
"timeSet": 1,
"byteOrder": "abcd",
"mapping_table": []
},
"opcuaServer": {
"enable": 0,
"port": 4840,
"maximumLink": 5,
"securityMode": 0,
"identifierType": "String",
"mapping_table": []
},
"southMetadata": {},
"bindMetadata": {
"version": "",
"timestamp": ""
},
"bindConfig": {
"enable": 0,
"bind": {
"modelId": "",
"modelName": "",
"srcId": "",
"srcName": "",
"devId": "",
"devName": ""
},
"varGroups": [],
"variables": [],
"alerts": []
},
"version": "2.2.1"
}

View File

@@ -0,0 +1,164 @@
import json, os, struct
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from mobiuspi_lib.gps import GPS
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
from pycomm3 import CIPDriver
def reboot():
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x["key"]] = x["value"]
return j
def convertJSONtoDS(j):
d = []
for key in j.keys():
d.append({"key": key, "value": j[key]})
return d
def checkCredentialConfig():
logger.info("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.info(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
checkFileExist("creds.json")
with open(credspath, "r") as c:
creds = json.load(c)
if creds:
logger.info("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.info("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
creds = json.load(c)
if creds:
if creds["clientId"] != clouds[0]["args"]["clientId"]:
creds["clientId"] = clouds[0]["args"]["clientId"]
if creds["userName"] != clouds[0]["args"]["username"]:
creds["userName"] = clouds[0]["args"]["username"]
if creds["password"] != clouds[0]["args"]["passwd"]:
creds["password"] = clouds[0]["args"]["passwd"]
else:
creds["clientId"] = clouds[0]["args"]["clientId"]
creds["userName"] = clouds[0]["args"]["username"]
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
def checkParameterConfig(cfg):
logger.info("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.info("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.info("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.info("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
def getGPS():
# Create a gps instance
gps = GPS()
# Retrieve GPS information
position_status = gps.get_position_status()
logger.debug("position_status: ")
logger.debug(position_status)
latitude = position_status["latitude"].split(" ")
longitude = position_status["longitude"].split(" ")
lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)
lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)
if latitude[2] == "S":
lat_dec = lat_dec * -1
if longitude[2] == "W":
lon_dec = lon_dec * -1
#lat_dec = round(lat_dec, 7)
#lon_dec = round(lon_dec, 7)
logger.info("HERE IS THE GPS COORDS")
logger.info(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
speedKnots = position_status["speed"].split(" ")
speedMPH = float(speedKnots[0]) * 1.151
publish(__topic__, json.dumps({"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values":{"latitude":f"{lat_dec:.8f}", "longitude":f"{lon_dec:.8f}", "speed": f"{speedMPH:.2f}"}}), __qos__)
def sendData(message,wizard_api):
logger.debug(message)
#publish(__topic__, json.dumps(message), __qos__)
try:
#checkCredentialConfig()
with CIPDriver('192.168.1.223') as fm:
resp = fm.generic_message(service=b"\x0E", #get_single_attribute
class_code=b"\x04", #assembly
instance=b"\x64", #assembly 100 which is a 40byte array
attribute=b"\x03", #similar to function code in modbus
route_path=True)
print("Bytes", resp[1])
logger.info("Volume Flow", struct.unpack('f',resp[1][8:12])[0]) #volume flow is byte 9 - 12
logger.info("Totalizer 1",struct.unpack('f',resp[1][28:32])[0]) #totalizer 1 is byte 29 - 32
logger.info("Totalizer 2", struct.unpack('f',resp[1][32:36])[0]) #totalizer 2 is byte 33 - 36
logger.info("Totalizer 3", struct.unpack('f',resp[1][36:40])[0]) #totalizer 3 is byte 37 - 40
except:
logger.error("Could not get gps data!")

View File

@@ -29,13 +29,11 @@
"uploadType": "periodic",
"dataType": "FLOAT",
"addr": "43874",
"decimal": 2,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"decimal": 2,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
},
{
@@ -45,13 +43,11 @@
"uploadType": "periodic",
"dataType": "FLOAT",
"addr": "42610",
"decimal": 2,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"decimal": 2,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
},
{
@@ -61,13 +57,11 @@
"uploadType": "periodic",
"dataType": "FLOAT",
"addr": "42810",
"decimal": 2,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"decimal": 2,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
},
{
@@ -77,59 +71,57 @@
"uploadType": "periodic",
"dataType": "FLOAT",
"addr": "43010",
"decimal": 2,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"decimal": 2,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
},
{
"name": "flow_unit",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "periodic",
"uploadType": "onChange",
"dataType": "INT",
"addr": "42103",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
"offset": "0.0"
},
{
"name": "totalizer_1_unit",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "periodic",
"uploadType": "onChange",
"dataType": "INT",
"addr": "44604",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
"offset": "0.0"
},
{
"name": "totalizer_2_unit",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "periodic",
"uploadType": "onChange",
"dataType": "INT",
"addr": "44605",
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
"offset": "0.0"
},
{
"name": "totalizer_3_unit",
@@ -142,24 +134,69 @@
"unit": "",
"desc": "",
"transformType": 0,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
},
{
"name": "reset_totalizers",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "periodic",
"group": "",
"uploadType": "never",
"dataType": "INT",
"addr": "42609",
"readWrite": "rw",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0",
"msecSample": 0
"offset": "0.0"
},
{
"name": "byte_order",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "onChange",
"dataType": "INT",
"addr": "44915",
"readWrite": "rw",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0"
},
{
"name": "device_name",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "onChange",
"dataType": "STRING",
"addr": "47238",
"len": 14,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0"
},
{
"name": "serial_number",
"ctrlName": "flowmeter",
"group": "default",
"uploadType": "onChange",
"dataType": "STRING",
"addr": "47003",
"len": 12,
"readWrite": "ro",
"unit": "",
"desc": "",
"transformType": 0,
"msecSample": 0,
"gain": "1.0",
"offset": "0.0"
}
],
"alarmLables": [

View File

@@ -6,52 +6,71 @@ from mobiuspi_lib.gps import GPS
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot():
def reboot(reason="Rebooting for config file update"):
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
logger.info(reason)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
try:
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
logger.debug("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist while making folder: {e}")
try:
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
logger.debug("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist wihle making file: {e}")
def convertDStoJSON(ds):
j = dict()
try:
for x in ds:
j[x["key"]] = x["value"]
except Exception as e:
logger.error(f"Something went wrong in convertDStoJSON: {e}")
return j
def convertJSONtoDS(j):
d = []
try:
for key in j.keys():
d.append({"key": key, "value": j[key]})
except Exception as e:
logger.error(f"Something went wrong in convertJSONtoDS: {e}")
return d
def checkCredentialConfig():
logger.info("CHECKING CONFIG")
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
try:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.info(clouds)
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
try:
checkFileExist("creds.json")
except Exception as e:
logger.error(f"Error in checkFileExist: {e}")
with open(credspath, "r") as c:
try:
creds = json.load(c)
if creds:
logger.info("updating config with stored data")
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
@@ -60,11 +79,13 @@ def checkCredentialConfig():
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
except Exception as e:
logger.error(f"Error trying to load credentials from file: {e}")
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.info("updating stored file with new data")
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
@@ -82,22 +103,25 @@ def checkCredentialConfig():
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
except Exception as e:
logger.error(f"Somethign went wrong in checkCredentialConfig: {e}")
def checkParameterConfig(cfg):
logger.info("Checking Parameters!!!!")
try:
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.info("Opened param storage file")
logger.debug("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.info("equalizing params between cfg and stored")
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
@@ -110,11 +134,15 @@ def checkParameterConfig(cfg):
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.info("initializing param file with params in memory")
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
except Exception as e:
logger.error(f"Something went wrong in checkParameterConfig: {e}")
os.system(f'rm {paramspath}')
return cfg
payload = {}

View File

@@ -49,7 +49,7 @@ def resetTotalizers():
totalizers["dayHolding"] = 0
totalizers["weekHolding"] = 0
totalizers["MonthHolding"] = 0
totalizers["monthHolding"] = 0
totalizers["yearHolding"] = 0
saveTotalizers(totalizers)
return True

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,299 @@
import json, os
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from mobiuspi_lib.gps import GPS
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot(reason="Rebooting for config file update"):
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
logger.info(reason)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
try:
if not os.path.exists(path):
logger.debug("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist while making folder: {e}")
try:
if not os.path.exists(path + "/" + filename):
logger.debug("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
except Exception as e:
logger.error(f"Something went wrong in checkFileExist wihle making file: {e}")
def convertDStoJSON(ds):
j = dict()
try:
for x in ds:
j[x["key"]] = x["value"]
except Exception as e:
logger.error(f"Something went wrong in convertDStoJSON: {e}")
return j
def convertJSONtoDS(j):
d = []
try:
for key in j.keys():
d.append({"key": key, "value": j[key]})
except Exception as e:
logger.error(f"Something went wrong in convertJSONtoDS: {e}")
return d
def checkCredentialConfig():
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
try:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
try:
checkFileExist("creds.json")
except Exception as e:
logger.error(f"Error in checkFileExist: {e}")
with open(credspath, "r") as c:
try:
creds = json.load(c)
if creds:
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
except Exception as e:
logger.error(f"Error trying to load credentials from file: {e}")
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
creds = json.load(c)
if creds:
if creds["clientId"] != clouds[0]["args"]["clientId"]:
creds["clientId"] = clouds[0]["args"]["clientId"]
if creds["userName"] != clouds[0]["args"]["username"]:
creds["userName"] = clouds[0]["args"]["username"]
if creds["password"] != clouds[0]["args"]["passwd"]:
creds["password"] = clouds[0]["args"]["passwd"]
else:
creds["clientId"] = clouds[0]["args"]["clientId"]
creds["userName"] = clouds[0]["args"]["username"]
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
except Exception as e:
logger.error(f"Somethign went wrong in checkCredentialConfig: {e}")
def checkParameterConfig(cfg):
try:
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.debug("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
except Exception as e:
logger.error(f"Something went wrong in checkParameterConfig: {e}")
os.system(f'rm {paramspath}')
return cfg
payload = {}
def get_totalizers():
try:
with open("/var/user/files/totalizers.json", "r") as t:
totalizers = json.load(t)
if not totalizers:
logger.info("-----INITIALIZING TOTALIZERS-----")
totalizers = {
"day": 0,
"week": 0,
"month": 0,
"year": 0,
"lifetime": 0,
"dayHolding": 0,
"weekHolding": 0,
"monthHolding": 0,
"yearHolding": 0
}
except:
totalizers = {
"day": 0,
"week": 0,
"month": 0,
"year": 0,
"lifetime": 0,
"dayHolding": 0,
"weekHolding": 0,
"monthHolding": 0,
"yearHolding": 0
}
return totalizers
def sendData(message,wizard_api):
logger.debug(message)
checkCredentialConfig()
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
resetPayload = {"ts": "", "values": {}}
dayReset, weekReset, monthReset, yearReset = False, False, False, False
for measure in message["values"]["flowmeter"].keys():
try:
if measure in ["totalizer_1"]:
payload["values"]["day_volume"], dayReset = totalizeDay(message["values"]["flowmeter"][measure]["raw_data"])
payload["values"]["week_volume"], weekReset = totalizeWeek(message["values"]["flowmeter"][measure]["raw_data"])
payload["values"]["month_volume"], monthReset = totalizeMonth(message["values"]["flowmeter"][measure]["raw_data"])
payload["values"]["year_volume"], yearReset = totalizeYear(message["values"]["flowmeter"][measure]["raw_data"])
payload["values"][measure] = message["values"]["flowmeter"][measure]["raw_data"]
except Exception as e:
logger.error(e)
try:
payload["values"]["latitude"], payload["values"]["longitude"], payload["values"]["speed"] = getGPS()
except:
logger.error("Could not get GPS coordinates")
publish(__topic__, json.dumps(payload), __qos__)
if dayReset:
resetPayload["values"]["yesterday_volume"] = payload["values"]["day_volume"]
resetPayload["values"]["day_volume"] = 0
if weekReset:
resetPayload["values"]["last_week_volume"] = payload["values"]["week_volume"]
resetPayload["values"]["week_volume"] = 0
if monthReset:
resetPayload["values"]["last_month_volume"] = payload["values"]["month_volume"]
resetPayload["values"]["month_volume"] = 0
if yearReset:
resetPayload["values"]["last_year_volume"] = payload["values"]["year_volume"]
resetPayload["values"]["year_volume"] = 0
if resetPayload["values"]:
resetPayload["ts"] = 1 + (round(dt.timestamp(dt.now())/600)*600)*1000
publish(__topic__, json.dumps(resetPayload), __qos__)
def saveTotalizers(totalizers):
try:
with open("/var/user/files/totalizers.json", "w") as t:
json.dump(totalizers,t)
except Exception as e:
logger.error(e)
def getGPS():
# Create a gps instance
gps = GPS()
# Retrieve GPS information
position_status = gps.get_position_status()
logger.debug("position_status: ")
logger.debug(position_status)
latitude = position_status["latitude"].split(" ")
longitude = position_status["longitude"].split(" ")
lat_dec = int(latitude[0][:-1]) + (float(latitude[1][:-1])/60)
lon_dec = int(longitude[0][:-1]) + (float(longitude[1][:-1])/60)
if latitude[2] == "S":
lat_dec = lat_dec * -1
if longitude[2] == "W":
lon_dec = lon_dec * -1
#lat_dec = round(lat_dec, 7)
#lon_dec = round(lon_dec, 7)
logger.info("HERE IS THE GPS COORDS")
logger.info(f"LATITUDE: {lat_dec}, LONGITUDE: {lon_dec}")
speedKnots = position_status["speed"].split(" ")
speedMPH = float(speedKnots[0]) * 1.151
return (f"{lat_dec:.8f}",f"{lon_dec:.8f}",f"{speedMPH:.2f}")
def totalizeDay(lifetime):
totalizers = get_totalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = lifetime - totalizers["dayHolding"]
if not int(now.strftime("%d")) == int(totalizers["day"]):
totalizers["dayHolding"] = lifetime
totalizers["day"] = int(now.strftime("%d"))
saveTotalizers(totalizers)
reset = True
return (value,reset)
def totalizeWeek(lifetime):
totalizers = get_totalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = lifetime - totalizers["weekHolding"]
if (not now.strftime("%U") == totalizers["week"] and now.strftime("%a") == "Sun") or totalizers["week"] == 0:
totalizers["weekHolding"] = lifetime
totalizers["week"] = now.strftime("%U")
saveTotalizers(totalizers)
reset = True
return (value, reset)
def totalizeMonth(lifetime):
totalizers = get_totalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = lifetime - totalizers["monthHolding"]
if not int(now.strftime("%m")) == int(totalizers["month"]):
totalizers["monthHolding"] = lifetime
totalizers["month"] = now.strftime("%m")
saveTotalizers(totalizers)
reset = True
return (value,reset)
def totalizeYear(lifetime):
totalizers = get_totalizers()
now = dt.fromtimestamp(round(dt.timestamp(dt.now())/600)*600)
reset = False
value = lifetime - totalizers["yearHolding"]
if not int(now.strftime("%Y")) == int(totalizers["year"]):
totalizers["yearHolding"] = lifetime
totalizers["year"] = now.strftime("%Y")
saveTotalizers(totalizers)
reset = True
return (value, reset)

View File

@@ -0,0 +1,97 @@
import json
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.measure import write
from quickfaas.remotebus import publish
def get_totalizers():
try:
with open("/var/user/files/totalizers.json", "r") as t:
totalizers = json.load(t)
if not totalizers:
logger.info("-----INITIALIZING TOTALIZERS-----")
totalizers = {
"day": 0,
"week": 0,
"month": 0,
"year": 0,
"lifetime": 0,
"dayHolding": 0,
"weekHolding": 0,
"monthHolding": 0,
"yearHolding": 0
}
except:
totalizers = {
"day": 0,
"week": 0,
"month": 0,
"year": 0,
"lifetime": 0,
"dayHolding": 0,
"weekHolding": 0,
"monthHolding": 0,
"yearHolding": 0
}
return totalizers
def saveTotalizers(totalizers):
try:
with open("/var/user/files/totalizers.json", "w") as t:
json.dump(totalizers,t)
except Exception as e:
logger.error(e)
def resetTotalizers():
try:
totalizers = get_totalizers()
totalizers["dayHolding"] = 0
totalizers["weekHolding"] = 0
totalizers["monthHolding"] = 0
totalizers["yearHolding"] = 0
saveTotalizers(totalizers)
return True
except Exception as e:
logger.error(e)
return e
def receiveCommand(topic, payload):
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)
command = p["method"]
if command == "resetTotalizers":
r = resetTotalizers()
if r == True:
message = [{"name": "flowmeter", "measures":[{"name":"reset_totalizers", "value": 1}]}]
try:
resp = write(message)
payload = {
"ts": (round(dt.timestamp(dt.now())/600)*600)*1000,
"values": {
"day_volume": 0,
"yesterday_volume": 0,
"week_volume": 0,
"last_week_volume": 0,
"month_volume": 0,
"last_month_volume": 0,
"year_volume": 0,
"last_year_volume": 0
}
}
publish("v1/devices/me/telemetry",json.dumps(payload))
except Exception as e:
logger.error("Failed to write message")
logger.error(e)
ack(topic.split("/")[-1], r)
def ack(msgid, r):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": (round(dt.timestamp(dt.now())/600)*600)*1000, "response": r}, "metadata": "", "msgType": ""}))

View File

@@ -0,0 +1 @@
[{"tag_name": "Local:1:C", "dim": 0, "alias": false, "instance_id": 3, "symbol_address": 84496, "symbol_object_address": 957828, "software_control": 201392131, "external_access": "Read/Write", "dimensions": [0, 0, 0], "template_instance_id": 822, "data_type": {"name": "AB:Embedded_DiscreteIO:C:0", "internal_tags": {"CfgSize": {"offset": 0, "tag_type": "atomic", "data_type": "DINT", "data_type_name": "DINT", "array": 0, "type_class":

View File

@@ -0,0 +1,76 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,bitMap,msecSample
plc_io_fault_alm,hrswd,default,periodic,BIT,IO_Fault_Alarm,,,ro,,,none,,,,,,,,,0,
plc_fault,hrswd,default,periodic,BIT,PLC_FAULT,,,ro,,,none,,,,,,,,,0,
plc_fault_code,hrswd,default,periodic,DINT,MAJOR_FAULT_CODE,,,ro,,,none,,,,,,,,,0,
analog_01_alm,hrswd,default,periodic,BIT,Fault_Analog_Mod_01,,,ro,,,none,,,,,,,,,0,
analog_02_alm,hrswd,default,periodic,BIT,Fault_Analog_Mod_02,,,ro,,,none,,,,,,,,,0,
analog_03_alm,hrswd,default,periodic,BIT,Fault_Analog_Mod_03,,,ro,,,none,,,,,,,,,0,
analog_04_alm,hrswd,default,periodic,BIT,Fault_Analog_Mod_04,,,ro,,,none,,,,,,,,,0,
digital_05_alm,hrswd,default,periodic,BIT,Fault_Digital_In_Mod_05,,,ro,,,none,,,,,,,,,0,
containment_high_alm,hrswd,default,periodic,BIT,Contain_Hi_Level.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
dc_power_alm,hrswd,default,periodic,BIT,UPS_DC_OK.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
esd_push_button,hrswd,default,periodic,BIT,ESD_Switch.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
water_run_tank,hrswd,default,periodic,DINT,WT_Selector,,,ro,,,none,,,,,,,,,,
water_01_level,hrswd,default,periodic,FLOAT,WT_1.Val,2,,ro,,,none,,,,,,,,,,
water_01_hihi_alm,hrswd,default,periodic,BIT,WT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_01_hi_alm,hrswd,default,periodic,BIT,WT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_01_tx_alm,hrswd,default,periodic,BIT,WT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_01_hihi_spt,hrswd,default,periodic,FLOAT,WT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_01_hi_spt,hrswd,default,periodic,FLOAT,WT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_01_max_height,hrswd,default,periodic,FLOAT,WT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_02_level,hrswd,default,periodic,FLOAT,WT_2.Val,2,,ro,,,none,,,,,,,,,,
water_02_hihi_alm,hrswd,default,periodic,BIT,WT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_02_hi_alm,hrswd,default,periodic,BIT,WT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_02_tx_alm,hrswd,default,periodic,BIT,WT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_02_hihi_spt,hrswd,default,periodic,FLOAT,WT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_02_hi_spt,hrswd,default,periodic,FLOAT,WT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_02_max_height,hrswd,default,periodic,FLOAT,WT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_03_level,hrswd,default,periodic,FLOAT,WT_3.Val,2,,ro,,,none,,,,,,,,,,
water_03_hihi_alm,hrswd,default,periodic,BIT,WT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_03_hi_alm,hrswd,default,periodic,BIT,WT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_03_tx_alm,hrswd,default,periodic,BIT,WT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_03_hihi_spt,hrswd,default,periodic,FLOAT,WT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_03_hi_spt,hrswd,default,periodic,FLOAT,WT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_03_max_height,hrswd,default,periodic,FLOAT,WT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_04_level,hrswd,default,periodic,FLOAT,WT_4.Val,2,,ro,,,none,,,,,,,,,,
water_04_hihi_alm,hrswd,default,periodic,BIT,WT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_04_hi_alm,hrswd,default,periodic,BIT,WT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_04_tx_alm,hrswd,default,periodic,BIT,WT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_04_hihi_spt,hrswd,default,periodic,FLOAT,WT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_04_hi_spt,hrswd,default,periodic,FLOAT,WT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_04_max_height,hrswd,default,periodic,FLOAT,WT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_01_level,hrswd,default,periodic,FLOAT,OT_1.Val,2,,ro,,,none,,,,,,,,,,
oil_01_hihi_alm,hrswd,default,periodic,BIT,OT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_01_hi_alm,hrswd,default,periodic,BIT,OT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_01_tx_alm,hrswd,default,periodic,BIT,OT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_01_hihi_spt,hrswd,default,periodic,FLOAT,OT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_01_hi_spt,hrswd,default,periodic,FLOAT,OT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_01_max_height,hrswd,default,periodic,FLOAT,OT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
pump_01_sts,hrswd,default,periodic,BIT,East_Pump_Motor_01.Sts_Running,,,ro,,,none,,,,,,,,,0,
pump_01_failed_alm,hrswd,default,periodic,BIT,East_Pump_Motor_01.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
pump_01_suction,hrswd,default,periodic,FLOAT,East_Pump_Suction_PSI.Val,2,,ro,,,none,,,,,,,,,,
pump_01_suction_hihi_alm,hrswd,default,periodic,BIT,East_Pump_Suction_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_01_suction_lolo_alm,hrswd,default,periodic,BIT,East_Pump_Suction_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_01_discharge,hrswd,default,periodic,FLOAT,East_Pump_Discharge_PSI.Val,2,,ro,,,none,,,,,,,,,,
pump_01_discharge_hihi_alm,hrswd,default,periodic,BIT,East_Pump_Discharge_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_01_discharge_lolo_alm,hrswd,default,periodic,BIT,East_Pump_Discharge_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_01_flow_rate,hrswd,default,periodic,FLOAT,East_Pump_Flow_Meter.Val,2,,ro,,,none,,,,,,,,,,
pump_01_flow_rate_hihi_alm,hrswd,default,periodic,BIT,East_Pump_Flow_Meter.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_01_flow_rate_lolo_alm,hrswd,default,periodic,BIT,East_Pump_Flow_Meter.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_01_oil_level_alm,hrswd,default,periodic,BIT,East_Pump_Oil_Level_Switch.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
pump_01_vibration_alm,hrswd,default,periodic,BIT,East_Pump_Vib_Switch.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
pump_01_fault_alm,hrswd,default,periodic,BIT,East_Pump_Fault.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
pump_02_sts,hrswd,default,periodic,BIT,West_Pump_Motor_02.Sts_Running,,,ro,,,none,,,,,,,,,0,
pump_02_failed_alm,hrswd,default,periodic,BIT,West_Pump_Motor_02.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
pump_02_suction,hrswd,default,periodic,FLOAT,West_Pump_Suction_PSI.Val,2,,ro,,,none,,,,,,,,,,
pump_02_suction_hihi_alm,hrswd,default,periodic,BIT,West_Pump_Suction_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_02_suction_lolo_alm,hrswd,default,periodic,BIT,West_Pump_Suction_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_02_discharge,hrswd,default,periodic,FLOAT,West_Pump_Discharge_PSI.Val,2,,ro,,,none,,,,,,,,,,
pump_02_discharge_hihi_alm,hrswd,default,periodic,BIT,West_Pump_Discharge_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_02_discharge_lolo_alm,hrswd,default,periodic,BIT,West_Pump_Discharge_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_02_flow_rate,hrswd,default,periodic,FLOAT,West_Pump_Flow_Meter.Val,2,,ro,,,none,,,,,,,,,,
pump_02_flow_rate_hihi_alm,hrswd,default,periodic,BIT,West_Pump_Flow_Meter.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
pump_02_flow_rate_lolo_alm,hrswd,default,periodic,BIT,West_Pump_Flow_Meter.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
pump_02_oil_level_alm,hrswd,default,periodic,BIT,West_Pump_Oil_Level_Switch.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
pump_02_vibration_alm,hrswd,default,periodic,BIT,West_Pump_Vib_Switch.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
pump_02_fault_alm,hrswd,default,periodic,BIT,West_Pump_Fault.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit bitMap msecSample
2 plc_io_fault_alm hrswd default periodic BIT IO_Fault_Alarm ro none 0
3 plc_fault hrswd default periodic BIT PLC_FAULT ro none 0
4 plc_fault_code hrswd default periodic DINT MAJOR_FAULT_CODE ro none 0
5 analog_01_alm hrswd default periodic BIT Fault_Analog_Mod_01 ro none 0
6 analog_02_alm hrswd default periodic BIT Fault_Analog_Mod_02 ro none 0
7 analog_03_alm hrswd default periodic BIT Fault_Analog_Mod_03 ro none 0
8 analog_04_alm hrswd default periodic BIT Fault_Analog_Mod_04 ro none 0
9 digital_05_alm hrswd default periodic BIT Fault_Digital_In_Mod_05 ro none 0
10 containment_high_alm hrswd default periodic BIT Contain_Hi_Level.Alm_TgtDisagree ro none 0
11 dc_power_alm hrswd default periodic BIT UPS_DC_OK.Alm_TgtDisagree ro none 0
12 esd_push_button hrswd default periodic BIT ESD_Switch.Alm_TgtDisagree ro none 0
13 water_run_tank hrswd default periodic DINT WT_Selector ro none
14 water_01_level hrswd default periodic FLOAT WT_1.Val 2 ro none
15 water_01_hihi_alm hrswd default periodic BIT WT_1.Alm_HiHi ro none 0
16 water_01_hi_alm hrswd default periodic BIT WT_1.Alm_Hi ro none 0
17 water_01_tx_alm hrswd default periodic BIT WT_1.Alm_Fail ro none 0
18 water_01_hihi_spt hrswd default periodic FLOAT WT_1.PSet_HiHiLim 2 ro none
19 water_01_hi_spt hrswd default periodic FLOAT WT_1.PSet_HiLim 2 ro none
20 water_01_max_height hrswd default periodic FLOAT WT_1.Cfg_PVEUMax 2 ro none
21 water_02_level hrswd default periodic FLOAT WT_2.Val 2 ro none
22 water_02_hihi_alm hrswd default periodic BIT WT_2.Alm_HiHi ro none 0
23 water_02_hi_alm hrswd default periodic BIT WT_2.Alm_Hi ro none 0
24 water_02_tx_alm hrswd default periodic BIT WT_2.Alm_Fail ro none 0
25 water_02_hihi_spt hrswd default periodic FLOAT WT_2.PSet_HiHiLim 2 ro none
26 water_02_hi_spt hrswd default periodic FLOAT WT_2.PSet_HiLim 2 ro none
27 water_02_max_height hrswd default periodic FLOAT WT_2.Cfg_PVEUMax 2 ro none
28 water_03_level hrswd default periodic FLOAT WT_3.Val 2 ro none
29 water_03_hihi_alm hrswd default periodic BIT WT_3.Alm_HiHi ro none 0
30 water_03_hi_alm hrswd default periodic BIT WT_3.Alm_Hi ro none 0
31 water_03_tx_alm hrswd default periodic BIT WT_3.Alm_Fail ro none 0
32 water_03_hihi_spt hrswd default periodic FLOAT WT_3.PSet_HiHiLim 2 ro none
33 water_03_hi_spt hrswd default periodic FLOAT WT_3.PSet_HiLim 2 ro none
34 water_03_max_height hrswd default periodic FLOAT WT_3.Cfg_PVEUMax 2 ro none
35 water_04_level hrswd default periodic FLOAT WT_4.Val 2 ro none
36 water_04_hihi_alm hrswd default periodic BIT WT_4.Alm_HiHi ro none 0
37 water_04_hi_alm hrswd default periodic BIT WT_4.Alm_Hi ro none 0
38 water_04_tx_alm hrswd default periodic BIT WT_4.Alm_Fail ro none 0
39 water_04_hihi_spt hrswd default periodic FLOAT WT_4.PSet_HiHiLim 2 ro none
40 water_04_hi_spt hrswd default periodic FLOAT WT_4.PSet_HiLim 2 ro none
41 water_04_max_height hrswd default periodic FLOAT WT_4.Cfg_PVEUMax 2 ro none
42 oil_01_level hrswd default periodic FLOAT OT_1.Val 2 ro none
43 oil_01_hihi_alm hrswd default periodic BIT OT_1.Alm_HiHi ro none 0
44 oil_01_hi_alm hrswd default periodic BIT OT_1.Alm_Hi ro none 0
45 oil_01_tx_alm hrswd default periodic BIT OT_1.Alm_Fail ro none 0
46 oil_01_hihi_spt hrswd default periodic FLOAT OT_1.PSet_HiHiLim 2 ro none
47 oil_01_hi_spt hrswd default periodic FLOAT OT_1.PSet_HiLim 2 ro none
48 oil_01_max_height hrswd default periodic FLOAT OT_1.Cfg_PVEUMax 2 ro none
49 pump_01_sts hrswd default periodic BIT East_Pump_Motor_01.Sts_Running ro none 0
50 pump_01_failed_alm hrswd default periodic BIT East_Pump_Motor_01.Alm_FailToStart ro none 0
51 pump_01_suction hrswd default periodic FLOAT East_Pump_Suction_PSI.Val 2 ro none
52 pump_01_suction_hihi_alm hrswd default periodic BIT East_Pump_Suction_PSI.Alm_HiHi ro none 0
53 pump_01_suction_lolo_alm hrswd default periodic BIT East_Pump_Suction_PSI.Alm_LoLo ro none 0
54 pump_01_discharge hrswd default periodic FLOAT East_Pump_Discharge_PSI.Val 2 ro none
55 pump_01_discharge_hihi_alm hrswd default periodic BIT East_Pump_Discharge_PSI.Alm_HiHi ro none 0
56 pump_01_discharge_lolo_alm hrswd default periodic BIT East_Pump_Discharge_PSI.Alm_LoLo ro none 0
57 pump_01_flow_rate hrswd default periodic FLOAT East_Pump_Flow_Meter.Val 2 ro none
58 pump_01_flow_rate_hihi_alm hrswd default periodic BIT East_Pump_Flow_Meter.Alm_HiHi ro none 0
59 pump_01_flow_rate_lolo_alm hrswd default periodic BIT East_Pump_Flow_Meter.Alm_LoLo ro none 0
60 pump_01_oil_level_alm hrswd default periodic BIT East_Pump_Oil_Level_Switch.Alm_TgtDisagree ro none 0
61 pump_01_vibration_alm hrswd default periodic BIT East_Pump_Vib_Switch.Alm_TgtDisagree ro none 0
62 pump_01_fault_alm hrswd default periodic BIT East_Pump_Fault.Alm_TgtDisagree ro none 0
63 pump_02_sts hrswd default periodic BIT West_Pump_Motor_02.Sts_Running ro none 0
64 pump_02_failed_alm hrswd default periodic BIT West_Pump_Motor_02.Alm_FailToStart ro none 0
65 pump_02_suction hrswd default periodic FLOAT West_Pump_Suction_PSI.Val 2 ro none
66 pump_02_suction_hihi_alm hrswd default periodic BIT West_Pump_Suction_PSI.Alm_HiHi ro none 0
67 pump_02_suction_lolo_alm hrswd default periodic BIT West_Pump_Suction_PSI.Alm_LoLo ro none 0
68 pump_02_discharge hrswd default periodic FLOAT West_Pump_Discharge_PSI.Val 2 ro none
69 pump_02_discharge_hihi_alm hrswd default periodic BIT West_Pump_Discharge_PSI.Alm_HiHi ro none 0
70 pump_02_discharge_lolo_alm hrswd default periodic BIT West_Pump_Discharge_PSI.Alm_LoLo ro none 0
71 pump_02_flow_rate hrswd default periodic FLOAT West_Pump_Flow_Meter.Val 2 ro none
72 pump_02_flow_rate_hihi_alm hrswd default periodic BIT West_Pump_Flow_Meter.Alm_HiHi ro none 0
73 pump_02_flow_rate_lolo_alm hrswd default periodic BIT West_Pump_Flow_Meter.Alm_LoLo ro none 0
74 pump_02_oil_level_alm hrswd default periodic BIT West_Pump_Oil_Level_Switch.Alm_TgtDisagree ro none 0
75 pump_02_vibration_alm hrswd default periodic BIT West_Pump_Vib_Switch.Alm_TgtDisagree ro none 0
76 pump_02_fault_alm hrswd default periodic BIT West_Pump_Fault.Alm_TgtDisagree ro none 0

View File

@@ -0,0 +1,46 @@
AlarmName,ControllerName,MeasuringPointName,AlarmLevel,Condition1,Operand1,CombineMethod,Condition2,Operand2,AlarmContent,AlarmTag
plc_io_fault_alm,hrswd,plc_io_fault_alm,5,eq,1.0,none,eq,,PLC IO has faulted,default
plc_fault,hrswd,plc_fault,5,eq,1.0,none,eq,,PLC has faulted,default
analog_01_alm,hrswd,analog_01_alm,5,eq,1.0,none,eq,,Analog Module 1 has faulted,default
analog_02_alm,hrswd,analog_02_alm,5,eq,1.0,none,eq,,Analog Module 2 has faulted,default
analog_03_alm,hrswd,analog_03_alm,5,eq,1.0,none,eq,,Analog Module 3 has faulted,default
analog_04_alm,hrswd,analog_04_alm,5,eq,1.0,none,eq,,Analog Module 4 has faulted,default
digital_05_alm,hrswd,digital_05_alm,5,eq,1.0,none,eq,,Analog Module 5 has faulted,default
containment_high_alm,hrswd,containment_high_alm,5,eq,1.0,none,eq,,Containment Level has crossed the Hi threshold.,default
dc_power_alm,hrswd,dc_power_alm,5,eq,1.0,none,eq,,DC Power Fault,default
esd_push_button,hrswd,esd_push_button,5,eq,1.0,none,eq,,ESD Button Pressed,default
water_01_hihi_alm,hrswd,water_01_hihi_alm,5,eq,1.0,none,eq,,Water Tank 1 crossed HiHi threshold,default
water_01_hi_alm,hrswd,water_01_hi_alm,5,eq,1.0,none,eq,,Water Tank 1 crossed Hi threshold,default
water_01_tx_alm,hrswd,water_01_tx_alm,5,eq,1.0,none,eq,,Water Tank 1 transmission error,default
water_02_hihi_alm,hrswd,water_02_hihi_alm,5,eq,1.0,none,eq,,Water Tank 2 crossed HiHi threshold,default
water_02_hi_alm,hrswd,water_02_hi_alm,5,eq,1.0,none,eq,,Water Tank 2 crossed Hi threshold,default
water_02_tx_alm,hrswd,water_02_tx_alm,5,eq,1.0,none,eq,,Water Tank 2 transmission error,default
water_03_hihi_alm,hrswd,water_03_hihi_alm,5,eq,1.0,none,eq,,Water Tank 3 crossed HiHi threshold,default
water_03_hi_alm,hrswd,water_03_hi_alm,5,eq,1.0,none,eq,,Water Tank 3 crossed Hi threshold,default
water_03_tx_alm,hrswd,water_03_tx_alm,5,eq,1.0,none,eq,,Water Tank 3 transmission error,default
water_04_hihi_alm,hrswd,water_04_hihi_alm,5,eq,1.0,none,eq,,Water Tank 4 crossed HiHi threshold,default
water_04_hi_alm,hrswd,water_04_hi_alm,5,eq,1.0,none,eq,,Water Tank 4 crossed Hi threshold,default
water_04_tx_alm,hrswd,water_04_tx_alm,5,eq,1.0,none,eq,,Water Tank 4 transmission error,default
oil_01_hihi_alm,hrswd,oil_01_hihi_alm,5,eq,1.0,none,eq,,Oil Tank 1 crossed HiHi threshold,default
oil_01_hi_alm,hrswd,oil_01_hi_alm,5,eq,1.0,none,eq,,Oil Tank 1 crossed Hi threshold,default
oil_01_tx_alm,hrswd,oil_01_tx_alm,5,eq,1.0,none,eq,,Oil Tank 1 transmission error,default
pump_01_failed_alm,hrswd,pump_01_failed_alm,5,eq,1.0,none,eq,,Pump 1 failed to start,default
pump_01_suction_hihi_alm,hrswd,pump_01_suction_hihi_alm,5,eq,1.0,none,eq,,Pump 1 crossed suction HiHi threshold,default
pump_01_suction_lolo_alm,hrswd,pump_01_suction_lolo_alm,5,eq,1.0,none,eq,,Pump 1 crossed suction LoLo threshold,default
pump_01_discharge_hihi_alm,hrswd,pump_01_discharge_hihi_alm,5,eq,1.0,none,eq,,Pump 1 crossed discharge HiHi threshold,default
pump_01_discharge_lolo_alm,hrswd,pump_01_discharge_lolo_alm,5,eq,1.0,none,eq,,Pump 1 crossed discharge LoLo threshold,default
pump_01_flow_rate_hihi_alm,hrswd,pump_01_flow_rate_hihi_alm,5,eq,1.0,none,eq,,Pump 1 crossed flow rate HiHi threshold,default
pump_01_flow_rate_lolo_alm,hrswd,pump_01_flow_rate_lolo_alm,5,eq,1.0,none,eq,,Pump 1 crossed flow rate LoLo threshold,default
pump_01_oil_level_alm,hrswd,pump_01_oil_level_alm,5,eq,1.0,none,eq,,Pump 1 oil level triggered,default
pump_01_vibration_alm,hrswd,pump_01_vibration_alm,5,eq,1.0,none,eq,,Pump 1 vibration triggered,default
pump_01_fault_alm,hrswd,pump_01_fault_alm,5,eq,1.0,none,eq,,Pump 1 faulted,default
pump_02_failed_alm,hrswd,pump_02_failed_alm,5,eq,1.0,none,eq,,Pump 2 failed to start,default
pump_02_suction_hihi_alm,hrswd,pump_02_suction_hihi_alm,5,eq,1.0,none,eq,,Pump 2 crossed suction HiHi threshold,default
pump_02_suction_lolo_alm,hrswd,pump_02_suction_lolo_alm,5,eq,1.0,none,eq,,Pump 2 crossed suction LoLo threshold,default
pump_02_discharge_hihi_alm,hrswd,pump_02_discharge_hihi_alm,5,eq,1.0,none,eq,,Pump 2 crossed discharge HiHi threshold,default
pump_02_discharge_lolo_alm,hrswd,pump_02_discharge_lolo_alm,5,eq,1.0,none,eq,,Pump 2 crossed discharge LoLo threshold,default
pump_02_flow_rate_hihi_alm,hrswd,pump_02_flow_rate_hihi_alm,5,eq,1.0,none,eq,,Pump 2 crossed flow rate HiHi threshold,default
pump_02_flow_rate_lolo_alm,hrswd,pump_02_flow_rate_lolo_alm,5,eq,1.0,none,eq,,Pump 2 crossed flow rate LoLo threshold,default
pump_02_oil_level_alm,hrswd,pump_02_oil_level_alm,5,eq,1.0,none,eq,,Pump 2 oil level triggered,default
pump_02_vibration_alm,hrswd,pump_02_vibration_alm,5,eq,1.0,none,eq,,Pump 2 vibration triggered,default
pump_02_fault_alm,hrswd,pump_02_fault_alm,5,eq,1.0,none,eq,,Pump 2 faulted,default
1 AlarmName ControllerName MeasuringPointName AlarmLevel Condition1 Operand1 CombineMethod Condition2 Operand2 AlarmContent AlarmTag
2 plc_io_fault_alm hrswd plc_io_fault_alm 5 eq 1.0 none eq PLC IO has faulted default
3 plc_fault hrswd plc_fault 5 eq 1.0 none eq PLC has faulted default
4 analog_01_alm hrswd analog_01_alm 5 eq 1.0 none eq Analog Module 1 has faulted default
5 analog_02_alm hrswd analog_02_alm 5 eq 1.0 none eq Analog Module 2 has faulted default
6 analog_03_alm hrswd analog_03_alm 5 eq 1.0 none eq Analog Module 3 has faulted default
7 analog_04_alm hrswd analog_04_alm 5 eq 1.0 none eq Analog Module 4 has faulted default
8 digital_05_alm hrswd digital_05_alm 5 eq 1.0 none eq Analog Module 5 has faulted default
9 containment_high_alm hrswd containment_high_alm 5 eq 1.0 none eq Containment Level has crossed the Hi threshold. default
10 dc_power_alm hrswd dc_power_alm 5 eq 1.0 none eq DC Power Fault default
11 esd_push_button hrswd esd_push_button 5 eq 1.0 none eq ESD Button Pressed default
12 water_01_hihi_alm hrswd water_01_hihi_alm 5 eq 1.0 none eq Water Tank 1 crossed HiHi threshold default
13 water_01_hi_alm hrswd water_01_hi_alm 5 eq 1.0 none eq Water Tank 1 crossed Hi threshold default
14 water_01_tx_alm hrswd water_01_tx_alm 5 eq 1.0 none eq Water Tank 1 transmission error default
15 water_02_hihi_alm hrswd water_02_hihi_alm 5 eq 1.0 none eq Water Tank 2 crossed HiHi threshold default
16 water_02_hi_alm hrswd water_02_hi_alm 5 eq 1.0 none eq Water Tank 2 crossed Hi threshold default
17 water_02_tx_alm hrswd water_02_tx_alm 5 eq 1.0 none eq Water Tank 2 transmission error default
18 water_03_hihi_alm hrswd water_03_hihi_alm 5 eq 1.0 none eq Water Tank 3 crossed HiHi threshold default
19 water_03_hi_alm hrswd water_03_hi_alm 5 eq 1.0 none eq Water Tank 3 crossed Hi threshold default
20 water_03_tx_alm hrswd water_03_tx_alm 5 eq 1.0 none eq Water Tank 3 transmission error default
21 water_04_hihi_alm hrswd water_04_hihi_alm 5 eq 1.0 none eq Water Tank 4 crossed HiHi threshold default
22 water_04_hi_alm hrswd water_04_hi_alm 5 eq 1.0 none eq Water Tank 4 crossed Hi threshold default
23 water_04_tx_alm hrswd water_04_tx_alm 5 eq 1.0 none eq Water Tank 4 transmission error default
24 oil_01_hihi_alm hrswd oil_01_hihi_alm 5 eq 1.0 none eq Oil Tank 1 crossed HiHi threshold default
25 oil_01_hi_alm hrswd oil_01_hi_alm 5 eq 1.0 none eq Oil Tank 1 crossed Hi threshold default
26 oil_01_tx_alm hrswd oil_01_tx_alm 5 eq 1.0 none eq Oil Tank 1 transmission error default
27 pump_01_failed_alm hrswd pump_01_failed_alm 5 eq 1.0 none eq Pump 1 failed to start default
28 pump_01_suction_hihi_alm hrswd pump_01_suction_hihi_alm 5 eq 1.0 none eq Pump 1 crossed suction HiHi threshold default
29 pump_01_suction_lolo_alm hrswd pump_01_suction_lolo_alm 5 eq 1.0 none eq Pump 1 crossed suction LoLo threshold default
30 pump_01_discharge_hihi_alm hrswd pump_01_discharge_hihi_alm 5 eq 1.0 none eq Pump 1 crossed discharge HiHi threshold default
31 pump_01_discharge_lolo_alm hrswd pump_01_discharge_lolo_alm 5 eq 1.0 none eq Pump 1 crossed discharge LoLo threshold default
32 pump_01_flow_rate_hihi_alm hrswd pump_01_flow_rate_hihi_alm 5 eq 1.0 none eq Pump 1 crossed flow rate HiHi threshold default
33 pump_01_flow_rate_lolo_alm hrswd pump_01_flow_rate_lolo_alm 5 eq 1.0 none eq Pump 1 crossed flow rate LoLo threshold default
34 pump_01_oil_level_alm hrswd pump_01_oil_level_alm 5 eq 1.0 none eq Pump 1 oil level triggered default
35 pump_01_vibration_alm hrswd pump_01_vibration_alm 5 eq 1.0 none eq Pump 1 vibration triggered default
36 pump_01_fault_alm hrswd pump_01_fault_alm 5 eq 1.0 none eq Pump 1 faulted default
37 pump_02_failed_alm hrswd pump_02_failed_alm 5 eq 1.0 none eq Pump 2 failed to start default
38 pump_02_suction_hihi_alm hrswd pump_02_suction_hihi_alm 5 eq 1.0 none eq Pump 2 crossed suction HiHi threshold default
39 pump_02_suction_lolo_alm hrswd pump_02_suction_lolo_alm 5 eq 1.0 none eq Pump 2 crossed suction LoLo threshold default
40 pump_02_discharge_hihi_alm hrswd pump_02_discharge_hihi_alm 5 eq 1.0 none eq Pump 2 crossed discharge HiHi threshold default
41 pump_02_discharge_lolo_alm hrswd pump_02_discharge_lolo_alm 5 eq 1.0 none eq Pump 2 crossed discharge LoLo threshold default
42 pump_02_flow_rate_hihi_alm hrswd pump_02_flow_rate_hihi_alm 5 eq 1.0 none eq Pump 2 crossed flow rate HiHi threshold default
43 pump_02_flow_rate_lolo_alm hrswd pump_02_flow_rate_lolo_alm 5 eq 1.0 none eq Pump 2 crossed flow rate LoLo threshold default
44 pump_02_oil_level_alm hrswd pump_02_oil_level_alm 5 eq 1.0 none eq Pump 2 oil level triggered default
45 pump_02_vibration_alm hrswd pump_02_vibration_alm 5 eq 1.0 none eq Pump 2 vibration triggered default
46 pump_02_fault_alm hrswd pump_02_fault_alm 5 eq 1.0 none eq Pump 2 faulted default

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
# Enter your python code.
import json, time
from common.Logger import logger
from quickfaas.remotebus import publish
def sendAlarm(message):
logger.info(message)
payload = {}
payload["ts"] = time.time()*1000
payload["values"] = {message["measureName"]: message["value"]}
publish(__topic__, json.dumps(payload), __qos__)

View File

@@ -0,0 +1,145 @@
# Enter your python code.
import json, os
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot(reason="Rebooting for config file update"):
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
logger.info(reason)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x["key"]] = x["value"]
return j
def convertJSONtoDS(j):
d = []
for key in j.keys():
d.append({"key": key, "value": j[key]})
return d
def checkCredentialConfig():
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
checkFileExist("creds.json")
with open(credspath, "r") as c:
creds = json.load(c)
if creds:
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
creds = json.load(c)
if creds:
if creds["clientId"] != clouds[0]["args"]["clientId"]:
creds["clientId"] = clouds[0]["args"]["clientId"]
if creds["userName"] != clouds[0]["args"]["username"]:
creds["userName"] = clouds[0]["args"]["username"]
if creds["password"] != clouds[0]["args"]["passwd"]:
creds["password"] = clouds[0]["args"]["passwd"]
else:
creds["clientId"] = clouds[0]["args"]["clientId"]
creds["userName"] = clouds[0]["args"]["username"]
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
def checkParameterConfig(cfg):
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.debug("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
def sendData(message):
#logger.debug(message)
try:
checkCredentialConfig()
except Exception as e:
logger.error(e)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
run_tanks = {}
for measure in message["measures"]:
try:
logger.debug(measure)
if abs(payload["ts"]/1000 - measure["timestamp"]) > 3600:
reboot(reason="Poll timestamp and actual timestamp out of sync. Actual: {} Poll: {}".format(payload["ts"]/1000,measure["timestamp"]))
if measure["name"] in ["oil_run_tank","water_run_tank"]:
run_tanks[measure["name"]] = measure["value"]
if "_level" in measure["name"]:
run_tanks[measure["name"]] = measure["value"]
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
payload["values"]["oil_run_tank_level"] = run_tanks["oil_0" + str(run_tanks["oil_run_tank"]) + "_level"]
payload["values"]["water_run_tank_level"] = run_tanks["water_0" + str(run_tanks["water_run_tank"]) + "_level"]
publish(__topic__, json.dumps(payload), __qos__)
publish("v1/devices/me/attributes", json.dumps({"latestReportTime": (round(dt.timestamp(dt.now())/600)*600)*1000}), __qos__)

View File

@@ -0,0 +1,66 @@
import json, time
from quickfaas.measure import recall, write
from quickfaas.remotebus import publish
from common.Logger import logger
def sync():
#get new values and send
payload = {}
topic = "v1/devices/me/telemetry"
try:
data = recall()#json.loads(recall().decode("utf-8"))
except Exception as e:
logger.error(e)
logger.debug(data)
for controller in data:
for measure in controller["measures"]:
#publish measure
payload[measure["name"]] = measure["value"]
logger.debug("Sending on topic: {}".format(topic))
logger.debug("Sending value: {}".format(payload))
publish(topic, json.dumps(payload), 1)
def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>}
try:
#value = json.loads(value.replace("'",'"'))
logger.debug(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "hrtankbattery", "measures":[{"name":value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.debug("RETURN FROM WRITE: {}".format(resp))
return True
except Exception as e:
logger.debug(e)
return False
def receiveCommand(topic, payload):
try:
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)
command = p["method"]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
if command == "setPLCTag":
try:
result = commands["writeplctag"](p["params"])
logger.debug(result)
except Exception as e:
logger.error(e)
#logger.debug(command)
ack(topic.split("/")[-1])
time.sleep(5)
sync()
except Exception as e:
logger.debug(e)
def ack(msgid):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": time.time()}, "metadata": "", "msgType": ""}), 1)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,172 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,bitMap,msecSample
plc_io_fault_alm,hrtankbattery,default,periodic,BIT,IO_Fault_Alarm,,,ro,,,none,,,,,,,,,0,
plc_fault,hrtankbattery,default,periodic,BIT,PLC_FAULT,,,ro,,,none,,,,,,,,,0,
analog_01_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_01,,,ro,,,none,,,,,,,,,0,
analog_02_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_02,,,ro,,,none,,,,,,,,,0,
analog_03_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_03,,,ro,,,none,,,,,,,,,0,
analog_04_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_04,,,ro,,,none,,,,,,,,,0,
analog_05_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_05,,,ro,,,none,,,,,,,,,0,
analog_06_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_06,,,ro,,,none,,,,,,,,,0,
ac_power_alm,hrtankbattery,default,periodic,BIT,Alm_AC_Pwr.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
ups_alm,hrtankbattery,default,periodic,BIT,Alm_UPS.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
dc_power_alm,hrtankbattery,default,periodic,BIT,DC_Power_OK.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
three_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Three_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
count_oil_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_OIL_TANKS,,,ro,,,none,,,,,,,,,,
count_water_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_WTR_TANKS,,,ro,,,none,,,,,,,,,,
count_flow_meters,hrtankbattery,default,periodic,DINT,NUMBER_OF_FLOWMETERS,,,ro,,,none,,,,,,,,,,
count_transfer_pumps,hrtankbattery,default,periodic,DINT,NUMBER_OF_TRANSFER_PUMPS,,,ro,,,none,,,,,,,,,,
count_lacts,hrtankbattery,default,periodic,DINT,NUMBER_OF_LACTS,,,ro,,,none,,,,,,,,,,
water_run_tank,hrtankbattery,default,periodic,DINT,WT_Selector,,,ro,,,none,,,,,,,,,,
water_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Curent_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_01_level,hrtankbattery,default,periodic,FLOAT,WT_1.Val,2,,ro,,,none,,,,,,,,,,
water_01_hihi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_01_hi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_01_tx_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_01_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_01_max_height,hrtankbattery,default,periodic,FLOAT,WT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_02_level,hrtankbattery,default,periodic,FLOAT,WT_2.Val,2,,ro,,,none,,,,,,,,,,
water_02_hihi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_02_hi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_02_tx_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_02_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_02_max_height,hrtankbattery,default,periodic,FLOAT,WT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_03_level,hrtankbattery,default,periodic,FLOAT,WT_3.Val,2,,ro,,,none,,,,,,,,,,
water_03_hihi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_03_hi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_03_tx_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_03_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_03_max_height,hrtankbattery,default,periodic,FLOAT,WT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_04_level,hrtankbattery,default,periodic,FLOAT,WT_4.Val,2,,ro,,,none,,,,,,,,,,
water_04_hihi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_04_hi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_04_tx_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_04_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_04_max_height,hrtankbattery,default,periodic,FLOAT,WT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_05_level,hrtankbattery,default,periodic,FLOAT,WT_5.Val,2,,ro,,,none,,,,,,,,,,
water_05_hihi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_05_hi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_05_tx_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_05_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_05_max_height,hrtankbattery,default,periodic,FLOAT,WT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_06_level,hrtankbattery,default,periodic,FLOAT,WT_6.Val,2,,ro,,,none,,,,,,,,,,
water_06_hihi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_06_hi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_06_tx_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_06_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_06_max_height,hrtankbattery,default,periodic,FLOAT,WT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_07_level,hrtankbattery,default,periodic,FLOAT,WT_7.Val,2,,ro,,,none,,,,,,,,,,
water_07_hihi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_07_hi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_07_tx_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_07_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_07_max_height,hrtankbattery,default,periodic,FLOAT,WT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_08_level,hrtankbattery,default,periodic,FLOAT,WT_8.Val,2,,ro,,,none,,,,,,,,,,
water_08_hihi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_08_hi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_08_tx_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_08_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_08_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_08_max_height,hrtankbattery,default,periodic,FLOAT,WT_8.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_09_level,hrtankbattery,default,periodic,FLOAT,WT_9.Val,2,,ro,,,none,,,,,,,,,,
water_09_hihi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_09_hi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_09_tx_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_09_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_09_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_09_max_height,hrtankbattery,default,periodic,FLOAT,WT_9.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_run_tank,hrtankbattery,default,periodic,DINT,OT_Selector,,,ro,,,none,,,,,,,,,,
oil_run_tank_level,hrtankbattery,default,periodic,FLOAT,Current_Oil_Tank_Level,2,,ro,,,none,,,,,,,,,,
oil_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Current_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_01_level,hrtankbattery,default,periodic,FLOAT,OT_1.Val,2,,ro,,,none,,,,,,,,,,
oil_01_hihi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_01_hi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_01_tx_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_01_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_01_max_height,hrtankbattery,default,periodic,FLOAT,OT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_02_level,hrtankbattery,default,periodic,FLOAT,OT_2.Val,2,,ro,,,none,,,,,,,,,,
oil_02_hihi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_02_hi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_02_tx_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_02_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_02_max_height,hrtankbattery,default,periodic,FLOAT,OT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_03_level,hrtankbattery,default,periodic,FLOAT,OT_3.Val,2,,ro,,,none,,,,,,,,,,
oil_03_hihi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_03_hi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_03_tx_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_03_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_03_max_height,hrtankbattery,default,periodic,FLOAT,OT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_04_level,hrtankbattery,default,periodic,FLOAT,OT_4.Val,2,,ro,,,none,,,,,,,,,,
oil_04_hihi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_04_hi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_04_tx_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_04_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_04_max_height,hrtankbattery,default,periodic,FLOAT,OT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_05_level,hrtankbattery,default,periodic,FLOAT,OT_5.Val,2,,ro,,,none,,,,,,,,,,
oil_05_hihi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_05_hi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_05_tx_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_05_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_05_max_height,hrtankbattery,default,periodic,FLOAT,OT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_06_level,hrtankbattery,default,periodic,FLOAT,OT_6.Val,2,,ro,,,none,,,,,,,,,,
oil_06_hihi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_06_hi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_06_tx_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_06_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_06_max_height,hrtankbattery,default,periodic,FLOAT,OT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_07_level,hrtankbattery,default,periodic,FLOAT,OT_7.Val,2,,ro,,,none,,,,,,,,,,
oil_07_hihi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_07_hi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_07_tx_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_07_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_07_max_height,hrtankbattery,default,periodic,FLOAT,OT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
transfer_01_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_01_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_01_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_01_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_3_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
transfer_02_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_02_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_02_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_02_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
lact_01_permissive,hrtankbattery,default,periodic,BIT,LACT_01_Permissive,,,ro,,,none,,,,,,,,,0,
lact_01_sts,hrtankbattery,default,periodic,BIT,LACT_01_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_01_alm,hrtankbattery,default,periodic,BIT,LACT_01_Failure,,,ro,,,none,,,,,,,,,0,
lact_01_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_01_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_01_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_01_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_01_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_01_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_01_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_01_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_01_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_01_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
lact_02_permissive,hrtankbattery,default,periodic,BIT,LACT_02_Permissive,,,ro,,,none,,,,,,,,,0,
lact_02_sts,hrtankbattery,default,periodic,BIT,LACT_02_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_02_alm,hrtankbattery,default,periodic,BIT,LACT_02_Failure,,,ro,,,none,,,,,,,,,0,
lact_02_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_02_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_02_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_02_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_02_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_02_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_02_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_02_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_02_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_02_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
containment_high_alm,hrtankbattery,default,periodic,BIT,Contain_Hi_Level.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
h2s_alm,hrtankbattery,default,periodic,BIT,H2s_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit bitMap msecSample
2 plc_io_fault_alm hrtankbattery default periodic BIT IO_Fault_Alarm ro none 0
3 plc_fault hrtankbattery default periodic BIT PLC_FAULT ro none 0
4 analog_01_alm hrtankbattery default periodic BIT Fault_Analog_Mod_01 ro none 0
5 analog_02_alm hrtankbattery default periodic BIT Fault_Analog_Mod_02 ro none 0
6 analog_03_alm hrtankbattery default periodic BIT Fault_Analog_Mod_03 ro none 0
7 analog_04_alm hrtankbattery default periodic BIT Fault_Analog_Mod_04 ro none 0
8 analog_05_alm hrtankbattery default periodic BIT Fault_Analog_Mod_05 ro none 0
9 analog_06_alm hrtankbattery default periodic BIT Fault_Analog_Mod_06 ro none 0
10 ac_power_alm hrtankbattery default periodic BIT Alm_AC_Pwr.Alm_TgtDisagree ro none 0
11 ups_alm hrtankbattery default periodic BIT Alm_UPS.Alm_TgtDisagree ro none 0
12 dc_power_alm hrtankbattery default periodic BIT DC_Power_OK.Alm_TgtDisagree ro none 0
13 three_phase_pwr_alm hrtankbattery default periodic BIT Three_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
14 count_oil_tanks hrtankbattery default periodic DINT NUMBER_OF_OIL_TANKS ro none
15 count_water_tanks hrtankbattery default periodic DINT NUMBER_OF_WTR_TANKS ro none
16 count_flow_meters hrtankbattery default periodic DINT NUMBER_OF_FLOWMETERS ro none
17 count_transfer_pumps hrtankbattery default periodic DINT NUMBER_OF_TRANSFER_PUMPS ro none
18 count_lacts hrtankbattery default periodic DINT NUMBER_OF_LACTS ro none
19 water_run_tank hrtankbattery default periodic DINT WT_Selector ro none
20 water_run_tank_volume hrtankbattery default periodic FLOAT Curent_Water_Tank_Volume 2 ro none
21 water_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Water_Tank_Volume 2 ro none
22 water_01_level hrtankbattery default periodic FLOAT WT_1.Val 2 ro none
23 water_01_hihi_alm hrtankbattery default periodic BIT WT_1.Alm_HiHi ro none 0
24 water_01_hi_alm hrtankbattery default periodic BIT WT_1.Alm_Hi ro none 0
25 water_01_tx_alm hrtankbattery default periodic BIT WT_1.Alm_Fail ro none 0
26 water_01_hihi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiHiLim 2 ro none
27 water_01_hi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiLim 2 ro none
28 water_01_max_height hrtankbattery default periodic FLOAT WT_1.Cfg_PVEUMax 2 ro none
29 water_02_level hrtankbattery default periodic FLOAT WT_2.Val 2 ro none
30 water_02_hihi_alm hrtankbattery default periodic BIT WT_2.Alm_HiHi ro none 0
31 water_02_hi_alm hrtankbattery default periodic BIT WT_2.Alm_Hi ro none 0
32 water_02_tx_alm hrtankbattery default periodic BIT WT_2.Alm_Fail ro none 0
33 water_02_hihi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiHiLim 2 ro none
34 water_02_hi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiLim 2 ro none
35 water_02_max_height hrtankbattery default periodic FLOAT WT_2.Cfg_PVEUMax 2 ro none
36 water_03_level hrtankbattery default periodic FLOAT WT_3.Val 2 ro none
37 water_03_hihi_alm hrtankbattery default periodic BIT WT_3.Alm_HiHi ro none 0
38 water_03_hi_alm hrtankbattery default periodic BIT WT_3.Alm_Hi ro none 0
39 water_03_tx_alm hrtankbattery default periodic BIT WT_3.Alm_Fail ro none 0
40 water_03_hihi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiHiLim 2 ro none
41 water_03_hi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiLim 2 ro none
42 water_03_max_height hrtankbattery default periodic FLOAT WT_3.Cfg_PVEUMax 2 ro none
43 water_04_level hrtankbattery default periodic FLOAT WT_4.Val 2 ro none
44 water_04_hihi_alm hrtankbattery default periodic BIT WT_4.Alm_HiHi ro none 0
45 water_04_hi_alm hrtankbattery default periodic BIT WT_4.Alm_Hi ro none 0
46 water_04_tx_alm hrtankbattery default periodic BIT WT_4.Alm_Fail ro none 0
47 water_04_hihi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiHiLim 2 ro none
48 water_04_hi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiLim 2 ro none
49 water_04_max_height hrtankbattery default periodic FLOAT WT_4.Cfg_PVEUMax 2 ro none
50 water_05_level hrtankbattery default periodic FLOAT WT_5.Val 2 ro none
51 water_05_hihi_alm hrtankbattery default periodic BIT WT_5.Alm_HiHi ro none 0
52 water_05_hi_alm hrtankbattery default periodic BIT WT_5.Alm_Hi ro none 0
53 water_05_tx_alm hrtankbattery default periodic BIT WT_5.Alm_Fail ro none 0
54 water_05_hihi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiHiLim 2 ro none
55 water_05_hi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiLim 2 ro none
56 water_05_max_height hrtankbattery default periodic FLOAT WT_5.Cfg_PVEUMax 2 ro none
57 water_06_level hrtankbattery default periodic FLOAT WT_6.Val 2 ro none
58 water_06_hihi_alm hrtankbattery default periodic BIT WT_6.Alm_HiHi ro none 0
59 water_06_hi_alm hrtankbattery default periodic BIT WT_6.Alm_Hi ro none 0
60 water_06_tx_alm hrtankbattery default periodic BIT WT_6.Alm_Fail ro none 0
61 water_06_hihi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiHiLim 2 ro none
62 water_06_hi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiLim 2 ro none
63 water_06_max_height hrtankbattery default periodic FLOAT WT_6.Cfg_PVEUMax 2 ro none
64 water_07_level hrtankbattery default periodic FLOAT WT_7.Val 2 ro none
65 water_07_hihi_alm hrtankbattery default periodic BIT WT_7.Alm_HiHi ro none 0
66 water_07_hi_alm hrtankbattery default periodic BIT WT_7.Alm_Hi ro none 0
67 water_07_tx_alm hrtankbattery default periodic BIT WT_7.Alm_Fail ro none 0
68 water_07_hihi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiHiLim 2 ro none
69 water_07_hi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiLim 2 ro none
70 water_07_max_height hrtankbattery default periodic FLOAT WT_7.Cfg_PVEUMax 2 ro none
71 water_08_level hrtankbattery default periodic FLOAT WT_8.Val 2 ro none
72 water_08_hihi_alm hrtankbattery default periodic BIT WT_8.Alm_HiHi ro none 0
73 water_08_hi_alm hrtankbattery default periodic BIT WT_8.Alm_Hi ro none 0
74 water_08_tx_alm hrtankbattery default periodic BIT WT_8.Alm_Fail ro none 0
75 water_08_hihi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiHiLim 2 ro none
76 water_08_hi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiLim 2 ro none
77 water_08_max_height hrtankbattery default periodic FLOAT WT_8.Cfg_PVEUMax 2 ro none
78 water_09_level hrtankbattery default periodic FLOAT WT_9.Val 2 ro none
79 water_09_hihi_alm hrtankbattery default periodic BIT WT_9.Alm_HiHi ro none 0
80 water_09_hi_alm hrtankbattery default periodic BIT WT_9.Alm_Hi ro none 0
81 water_09_tx_alm hrtankbattery default periodic BIT WT_9.Alm_Fail ro none 0
82 water_09_hihi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiHiLim 2 ro none
83 water_09_hi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiLim 2 ro none
84 water_09_max_height hrtankbattery default periodic FLOAT WT_9.Cfg_PVEUMax 2 ro none
85 oil_run_tank hrtankbattery default periodic DINT OT_Selector ro none
86 oil_run_tank_level hrtankbattery default periodic FLOAT Current_Oil_Tank_Level 2 ro none
87 oil_run_tank_volume hrtankbattery default periodic FLOAT Current_Oil_Tank_Volume 2 ro none
88 oil_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Oil_Tank_Volume 2 ro none
89 oil_01_level hrtankbattery default periodic FLOAT OT_1.Val 2 ro none
90 oil_01_hihi_alm hrtankbattery default periodic BIT OT_1.Alm_HiHi ro none 0
91 oil_01_hi_alm hrtankbattery default periodic BIT OT_1.Alm_Hi ro none 0
92 oil_01_tx_alm hrtankbattery default periodic BIT OT_1.Alm_Fail ro none 0
93 oil_01_hihi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiHiLim 2 ro none
94 oil_01_hi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiLim 2 ro none
95 oil_01_max_height hrtankbattery default periodic FLOAT OT_1.Cfg_PVEUMax 2 ro none
96 oil_02_level hrtankbattery default periodic FLOAT OT_2.Val 2 ro none
97 oil_02_hihi_alm hrtankbattery default periodic BIT OT_2.Alm_HiHi ro none 0
98 oil_02_hi_alm hrtankbattery default periodic BIT OT_2.Alm_Hi ro none 0
99 oil_02_tx_alm hrtankbattery default periodic BIT OT_2.Alm_Fail ro none 0
100 oil_02_hihi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiHiLim 2 ro none
101 oil_02_hi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiLim 2 ro none
102 oil_02_max_height hrtankbattery default periodic FLOAT OT_2.Cfg_PVEUMax 2 ro none
103 oil_03_level hrtankbattery default periodic FLOAT OT_3.Val 2 ro none
104 oil_03_hihi_alm hrtankbattery default periodic BIT OT_3.Alm_HiHi ro none 0
105 oil_03_hi_alm hrtankbattery default periodic BIT OT_3.Alm_Hi ro none 0
106 oil_03_tx_alm hrtankbattery default periodic BIT OT_3.Alm_Fail ro none 0
107 oil_03_hihi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiHiLim 2 ro none
108 oil_03_hi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiLim 2 ro none
109 oil_03_max_height hrtankbattery default periodic FLOAT OT_3.Cfg_PVEUMax 2 ro none
110 oil_04_level hrtankbattery default periodic FLOAT OT_4.Val 2 ro none
111 oil_04_hihi_alm hrtankbattery default periodic BIT OT_4.Alm_HiHi ro none 0
112 oil_04_hi_alm hrtankbattery default periodic BIT OT_4.Alm_Hi ro none 0
113 oil_04_tx_alm hrtankbattery default periodic BIT OT_4.Alm_Fail ro none 0
114 oil_04_hihi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiHiLim 2 ro none
115 oil_04_hi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiLim 2 ro none
116 oil_04_max_height hrtankbattery default periodic FLOAT OT_4.Cfg_PVEUMax 2 ro none
117 oil_05_level hrtankbattery default periodic FLOAT OT_5.Val 2 ro none
118 oil_05_hihi_alm hrtankbattery default periodic BIT OT_5.Alm_HiHi ro none 0
119 oil_05_hi_alm hrtankbattery default periodic BIT OT_5.Alm_Hi ro none 0
120 oil_05_tx_alm hrtankbattery default periodic BIT OT_5.Alm_Fail ro none 0
121 oil_05_hihi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiHiLim 2 ro none
122 oil_05_hi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiLim 2 ro none
123 oil_05_max_height hrtankbattery default periodic FLOAT OT_5.Cfg_PVEUMax 2 ro none
124 oil_06_level hrtankbattery default periodic FLOAT OT_6.Val 2 ro none
125 oil_06_hihi_alm hrtankbattery default periodic BIT OT_6.Alm_HiHi ro none 0
126 oil_06_hi_alm hrtankbattery default periodic BIT OT_6.Alm_Hi ro none 0
127 oil_06_tx_alm hrtankbattery default periodic BIT OT_6.Alm_Fail ro none 0
128 oil_06_hihi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiHiLim 2 ro none
129 oil_06_hi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiLim 2 ro none
130 oil_06_max_height hrtankbattery default periodic FLOAT OT_6.Cfg_PVEUMax 2 ro none
131 oil_07_level hrtankbattery default periodic FLOAT OT_7.Val 2 ro none
132 oil_07_hihi_alm hrtankbattery default periodic BIT OT_7.Alm_HiHi ro none 0
133 oil_07_hi_alm hrtankbattery default periodic BIT OT_7.Alm_Hi ro none 0
134 oil_07_tx_alm hrtankbattery default periodic BIT OT_7.Alm_Fail ro none 0
135 oil_07_hihi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiHiLim 2 ro none
136 oil_07_hi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiLim 2 ro none
137 oil_07_max_height hrtankbattery default periodic FLOAT OT_7.Cfg_PVEUMax 2 ro none
138 transfer_01_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Sts_Running ro none 0
139 transfer_01_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Alm_FailToStart ro none 0
140 transfer_01_discharge hrtankbattery default periodic FLOAT XferPump_01_Dis_PSI.Val 2 ro none
141 transfer_01_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_HiHi ro none 0
142 transfer_01_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_LoLo ro none 0
143 transfer_01_flow_rate hrtankbattery default periodic FLOAT XferPump_01_FlowRate.Val 2 ro none
144 transfer_01_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_HiHi ro none 0
145 transfer_01_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_LoLo ro none 0
146 transfer_01_3_phase_pwr_alm hrtankbattery default periodic BIT Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
147 transfer_02_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Sts_Running ro none 0
148 transfer_02_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Alm_FailToStart ro none 0
149 transfer_02_discharge hrtankbattery default periodic FLOAT XferPump_02_Dis_PSI.Val 2 ro none
150 transfer_02_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_HiHi ro none 0
151 transfer_02_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_LoLo ro none 0
152 transfer_02_flow_rate hrtankbattery default periodic FLOAT XferPump_02_FlowRate.Val 2 ro none
153 transfer_02_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_HiHi ro none 0
154 transfer_02_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_LoLo ro none 0
155 lact_01_permissive hrtankbattery default periodic BIT LACT_01_Permissive ro none 0
156 lact_01_sts hrtankbattery default periodic BIT LACT_01_Run_Status ro none 0
157 lact_01_alm hrtankbattery default periodic BIT LACT_01_Failure ro none 0
158 lact_01_oil_shutdown hrtankbattery default periodic BIT LACT_01_Bad_Oil_Shutdown ro none 0
159 lact_01_flow_rate hrtankbattery default periodic FLOAT Lact_01_Realtime_Flow_Rate 2 ro none
160 lact_01_bs_w hrtankbattery default periodic FLOAT Lact_01_BS_and_W_Reading 2 ro none
161 lact_01_daily_volume hrtankbattery default periodic FLOAT Lact_01_Current_Daily_Ind_Volume_Total 2 ro none
162 lact_01_prev_day hrtankbattery default periodic FLOAT Lact_01_History.Previous_Day_1 2 ro none
163 lact_02_permissive hrtankbattery default periodic BIT LACT_02_Permissive ro none 0
164 lact_02_sts hrtankbattery default periodic BIT LACT_02_Run_Status ro none 0
165 lact_02_alm hrtankbattery default periodic BIT LACT_02_Failure ro none 0
166 lact_02_oil_shutdown hrtankbattery default periodic BIT LACT_02_Bad_Oil_Shutdown ro none 0
167 lact_02_flow_rate hrtankbattery default periodic FLOAT Lact_02_Realtime_Flow_Rate 2 ro none
168 lact_02_bs_w hrtankbattery default periodic FLOAT Lact_02_BS_and_W_Reading 2 ro none
169 lact_02_daily_volume hrtankbattery default periodic FLOAT Lact_02_Current_Daily_Ind_Volume_Total 2 ro none
170 lact_02_prev_day hrtankbattery default periodic FLOAT Lact_02_History.Previous_Day_1 2 ro none
171 containment_high_alm hrtankbattery default periodic BIT Contain_Hi_Level.Alm_TgtDisagree ro none 0
172 h2s_alm hrtankbattery default periodic BIT H2s_Alarm.Alm_TgtDisagree ro none 0

View File

@@ -0,0 +1,302 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,bitMap,msecSample
plc_io_fault_alm,hrtankbattery,default,periodic,BIT,IO_Fault_Alarm,,,ro,,,none,,,,,,,,,0,
plc_fault,hrtankbattery,default,periodic,BIT,PLC_FAULT,,,ro,,,none,,,,,,,,,0,
analog_01_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_01,,,ro,,,none,,,,,,,,,0,
analog_02_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_02,,,ro,,,none,,,,,,,,,0,
analog_03_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_03,,,ro,,,none,,,,,,,,,0,
analog_04_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_04,,,ro,,,none,,,,,,,,,0,
analog_05_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_05,,,ro,,,none,,,,,,,,,0,
analog_06_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_06,,,ro,,,none,,,,,,,,,0,
ac_power_alm,hrtankbattery,default,periodic,BIT,Alm_AC_Pwr.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
ups_alm,hrtankbattery,default,periodic,BIT,Alm_UPS.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
dc_power_alm,hrtankbattery,default,periodic,BIT,DC_Power_OK.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
three_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Three_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
count_oil_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_OIL_TANKS,,,ro,,,none,,,,,,,,,,
count_water_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_WTR_TANKS,,,ro,,,none,,,,,,,,,,
count_flow_meters,hrtankbattery,default,periodic,DINT,NUMBER_OF_FLOWMETERS,,,ro,,,none,,,,,,,,,,
count_transfer_pumps,hrtankbattery,default,periodic,DINT,NUMBER_OF_TRANSFER_PUMPS,,,ro,,,none,,,,,,,,,,
count_lacts,hrtankbattery,default,periodic,DINT,NUMBER_OF_LACTS,,,ro,,,none,,,,,,,,,,
water_run_tank,hrtankbattery,default,periodic,DINT,WT_Selector,,,ro,,,none,,,,,,,,,,
water_01_level,hrtankbattery,default,periodic,FLOAT,WT_1.Val,2,,ro,,,none,,,,,,,,,,
water_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Curent_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_01_hihi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_01_hi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_01_tx_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_01_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_01_max_height,hrtankbattery,default,periodic,FLOAT,WT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_02_level,hrtankbattery,default,periodic,FLOAT,WT_2.Val,2,,ro,,,none,,,,,,,,,,
water_02_hihi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_02_hi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_02_tx_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_02_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_02_max_height,hrtankbattery,default,periodic,FLOAT,WT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_03_level,hrtankbattery,default,periodic,FLOAT,WT_3.Val,2,,ro,,,none,,,,,,,,,,
water_03_hihi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_03_hi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_03_tx_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_03_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_03_max_height,hrtankbattery,default,periodic,FLOAT,WT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_04_level,hrtankbattery,default,periodic,FLOAT,WT_4.Val,2,,ro,,,none,,,,,,,,,,
water_04_hihi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_04_hi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_04_tx_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_04_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_04_max_height,hrtankbattery,default,periodic,FLOAT,WT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_05_level,hrtankbattery,default,periodic,FLOAT,WT_5.Val,2,,ro,,,none,,,,,,,,,,
water_05_hihi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_05_hi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_05_tx_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_05_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_05_max_height,hrtankbattery,default,periodic,FLOAT,WT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_06_level,hrtankbattery,default,periodic,FLOAT,WT_6.Val,2,,ro,,,none,,,,,,,,,,
water_06_hihi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_06_hi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_06_tx_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_06_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_06_max_height,hrtankbattery,default,periodic,FLOAT,WT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_07_level,hrtankbattery,default,periodic,FLOAT,WT_7.Val,2,,ro,,,none,,,,,,,,,,
water_07_hihi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_07_hi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_07_tx_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_07_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_07_max_height,hrtankbattery,default,periodic,FLOAT,WT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_08_level,hrtankbattery,default,periodic,FLOAT,WT_8.Val,2,,ro,,,none,,,,,,,,,,
water_08_hihi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_08_hi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_08_tx_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_08_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_08_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_08_max_height,hrtankbattery,default,periodic,FLOAT,WT_8.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_09_level,hrtankbattery,default,periodic,FLOAT,WT_9.Val,2,,ro,,,none,,,,,,,,,,
water_09_hihi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_09_hi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_09_tx_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_09_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_09_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_09_max_height,hrtankbattery,default,periodic,FLOAT,WT_9.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_run_tank,hrtankbattery,default,periodic,DINT,OT_Selector,,,ro,,,none,,,,,,,,,,
oil_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Current_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_01_level,hrtankbattery,default,periodic,FLOAT,OT_1.Val,2,,ro,,,none,,,,,,,,,,
oil_01_hihi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_01_hi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_01_tx_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_01_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_01_max_height,hrtankbattery,default,periodic,FLOAT,OT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_02_level,hrtankbattery,default,periodic,FLOAT,OT_2.Val,2,,ro,,,none,,,,,,,,,,
oil_02_hihi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_02_hi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_02_tx_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_02_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_02_max_height,hrtankbattery,default,periodic,FLOAT,OT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_03_level,hrtankbattery,default,periodic,FLOAT,OT_3.Val,2,,ro,,,none,,,,,,,,,,
oil_03_hihi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_03_hi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_03_tx_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_03_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_03_max_height,hrtankbattery,default,periodic,FLOAT,OT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_04_level,hrtankbattery,default,periodic,FLOAT,OT_4.Val,2,,ro,,,none,,,,,,,,,,
oil_04_hihi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_04_hi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_04_tx_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_04_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_04_max_height,hrtankbattery,default,periodic,FLOAT,OT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_05_level,hrtankbattery,default,periodic,FLOAT,OT_5.Val,2,,ro,,,none,,,,,,,,,,
oil_05_hihi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_05_hi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_05_tx_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_05_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_05_max_height,hrtankbattery,default,periodic,FLOAT,OT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_06_level,hrtankbattery,default,periodic,FLOAT,OT_6.Val,2,,ro,,,none,,,,,,,,,,
oil_06_hihi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_06_hi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_06_tx_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_06_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_06_max_height,hrtankbattery,default,periodic,FLOAT,OT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_07_level,hrtankbattery,default,periodic,FLOAT,OT_7.Val,2,,ro,,,none,,,,,,,,,,
oil_07_hihi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_07_hi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_07_tx_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_07_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_07_max_height,hrtankbattery,default,periodic,FLOAT,OT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
transfer_01_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_01_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_01_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_01_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_3_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
transfer_02_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_02_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_02_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_02_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
lact_01_permissive,hrtankbattery,default,periodic,BIT,LACT_01_Permissive,,,ro,,,none,,,,,,,,,0,
lact_01_sts,hrtankbattery,default,periodic,BIT,LACT_01_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_01_alm,hrtankbattery,default,periodic,BIT,LACT_01_Failure,,,ro,,,none,,,,,,,,,0,
lact_01_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_01_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_01_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_01_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_01_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_01_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_01_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_01_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_01_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_01_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
lact_02_permissive,hrtankbattery,default,periodic,BIT,LACT_02_Permissive,,,ro,,,none,,,,,,,,,0,
lact_02_sts,hrtankbattery,default,periodic,BIT,LACT_02_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_02_alm,hrtankbattery,default,periodic,BIT,LACT_02_Failure,,,ro,,,none,,,,,,,,,0,
lact_02_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_02_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_02_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_02_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_02_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_02_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_02_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_02_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_02_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_02_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
containment_high_alm,hrtankbattery,default,periodic,BIT,Contain_Hi_Level.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
h2s_alm,hrtankbattery,default,periodic,BIT,H2s_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
tf_sales_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_sales_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_sales_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_sales_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_sales_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_sales_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_sales_temperature,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_sales_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v1_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v1_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v1_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v1_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v1_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v1_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v1_temperature,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v1_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v2_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v2_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v2_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v2_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v2_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v2_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v2_temperature,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v2_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v3_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v3_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v3_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v3_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v3_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v3_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v3_temperature,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v3_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v4_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v4_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v4_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v4_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v4_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v4_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v4_temperature,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v4_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v5_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v5_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v5_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v5_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v5_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v5_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v5_temperature,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v5_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
vessel_1_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_1_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_1_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_2_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_2_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_2_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_3_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_3_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_3_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_4_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_4_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_4_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_5_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_5_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_5_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_FR_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_last_month,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_month,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Month_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_net_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T1_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_forward_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T2_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_reverse_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T3_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_today,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Todays_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_yesterday,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Yest_Accum,2,,ro,,,none,,,,,,,,,,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit bitMap msecSample
2 plc_io_fault_alm hrtankbattery default periodic BIT IO_Fault_Alarm ro none 0
3 plc_fault hrtankbattery default periodic BIT PLC_FAULT ro none 0
4 analog_01_alm hrtankbattery default periodic BIT Fault_Analog_Mod_01 ro none 0
5 analog_02_alm hrtankbattery default periodic BIT Fault_Analog_Mod_02 ro none 0
6 analog_03_alm hrtankbattery default periodic BIT Fault_Analog_Mod_03 ro none 0
7 analog_04_alm hrtankbattery default periodic BIT Fault_Analog_Mod_04 ro none 0
8 analog_05_alm hrtankbattery default periodic BIT Fault_Analog_Mod_05 ro none 0
9 analog_06_alm hrtankbattery default periodic BIT Fault_Analog_Mod_06 ro none 0
10 ac_power_alm hrtankbattery default periodic BIT Alm_AC_Pwr.Alm_TgtDisagree ro none 0
11 ups_alm hrtankbattery default periodic BIT Alm_UPS.Alm_TgtDisagree ro none 0
12 dc_power_alm hrtankbattery default periodic BIT DC_Power_OK.Alm_TgtDisagree ro none 0
13 three_phase_pwr_alm hrtankbattery default periodic BIT Three_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
14 count_oil_tanks hrtankbattery default periodic DINT NUMBER_OF_OIL_TANKS ro none
15 count_water_tanks hrtankbattery default periodic DINT NUMBER_OF_WTR_TANKS ro none
16 count_flow_meters hrtankbattery default periodic DINT NUMBER_OF_FLOWMETERS ro none
17 count_transfer_pumps hrtankbattery default periodic DINT NUMBER_OF_TRANSFER_PUMPS ro none
18 count_lacts hrtankbattery default periodic DINT NUMBER_OF_LACTS ro none
19 water_run_tank hrtankbattery default periodic DINT WT_Selector ro none
20 water_01_level hrtankbattery default periodic FLOAT WT_1.Val 2 ro none
21 water_run_tank_volume hrtankbattery default periodic FLOAT Curent_Water_Tank_Volume 2 ro none
22 water_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Water_Tank_Volume 2 ro none
23 water_01_hihi_alm hrtankbattery default periodic BIT WT_1.Alm_HiHi ro none 0
24 water_01_hi_alm hrtankbattery default periodic BIT WT_1.Alm_Hi ro none 0
25 water_01_tx_alm hrtankbattery default periodic BIT WT_1.Alm_Fail ro none 0
26 water_01_hihi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiHiLim 2 ro none
27 water_01_hi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiLim 2 ro none
28 water_01_max_height hrtankbattery default periodic FLOAT WT_1.Cfg_PVEUMax 2 ro none
29 water_02_level hrtankbattery default periodic FLOAT WT_2.Val 2 ro none
30 water_02_hihi_alm hrtankbattery default periodic BIT WT_2.Alm_HiHi ro none 0
31 water_02_hi_alm hrtankbattery default periodic BIT WT_2.Alm_Hi ro none 0
32 water_02_tx_alm hrtankbattery default periodic BIT WT_2.Alm_Fail ro none 0
33 water_02_hihi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiHiLim 2 ro none
34 water_02_hi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiLim 2 ro none
35 water_02_max_height hrtankbattery default periodic FLOAT WT_2.Cfg_PVEUMax 2 ro none
36 water_03_level hrtankbattery default periodic FLOAT WT_3.Val 2 ro none
37 water_03_hihi_alm hrtankbattery default periodic BIT WT_3.Alm_HiHi ro none 0
38 water_03_hi_alm hrtankbattery default periodic BIT WT_3.Alm_Hi ro none 0
39 water_03_tx_alm hrtankbattery default periodic BIT WT_3.Alm_Fail ro none 0
40 water_03_hihi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiHiLim 2 ro none
41 water_03_hi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiLim 2 ro none
42 water_03_max_height hrtankbattery default periodic FLOAT WT_3.Cfg_PVEUMax 2 ro none
43 water_04_level hrtankbattery default periodic FLOAT WT_4.Val 2 ro none
44 water_04_hihi_alm hrtankbattery default periodic BIT WT_4.Alm_HiHi ro none 0
45 water_04_hi_alm hrtankbattery default periodic BIT WT_4.Alm_Hi ro none 0
46 water_04_tx_alm hrtankbattery default periodic BIT WT_4.Alm_Fail ro none 0
47 water_04_hihi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiHiLim 2 ro none
48 water_04_hi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiLim 2 ro none
49 water_04_max_height hrtankbattery default periodic FLOAT WT_4.Cfg_PVEUMax 2 ro none
50 water_05_level hrtankbattery default periodic FLOAT WT_5.Val 2 ro none
51 water_05_hihi_alm hrtankbattery default periodic BIT WT_5.Alm_HiHi ro none 0
52 water_05_hi_alm hrtankbattery default periodic BIT WT_5.Alm_Hi ro none 0
53 water_05_tx_alm hrtankbattery default periodic BIT WT_5.Alm_Fail ro none 0
54 water_05_hihi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiHiLim 2 ro none
55 water_05_hi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiLim 2 ro none
56 water_05_max_height hrtankbattery default periodic FLOAT WT_5.Cfg_PVEUMax 2 ro none
57 water_06_level hrtankbattery default periodic FLOAT WT_6.Val 2 ro none
58 water_06_hihi_alm hrtankbattery default periodic BIT WT_6.Alm_HiHi ro none 0
59 water_06_hi_alm hrtankbattery default periodic BIT WT_6.Alm_Hi ro none 0
60 water_06_tx_alm hrtankbattery default periodic BIT WT_6.Alm_Fail ro none 0
61 water_06_hihi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiHiLim 2 ro none
62 water_06_hi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiLim 2 ro none
63 water_06_max_height hrtankbattery default periodic FLOAT WT_6.Cfg_PVEUMax 2 ro none
64 water_07_level hrtankbattery default periodic FLOAT WT_7.Val 2 ro none
65 water_07_hihi_alm hrtankbattery default periodic BIT WT_7.Alm_HiHi ro none 0
66 water_07_hi_alm hrtankbattery default periodic BIT WT_7.Alm_Hi ro none 0
67 water_07_tx_alm hrtankbattery default periodic BIT WT_7.Alm_Fail ro none 0
68 water_07_hihi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiHiLim 2 ro none
69 water_07_hi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiLim 2 ro none
70 water_07_max_height hrtankbattery default periodic FLOAT WT_7.Cfg_PVEUMax 2 ro none
71 water_08_level hrtankbattery default periodic FLOAT WT_8.Val 2 ro none
72 water_08_hihi_alm hrtankbattery default periodic BIT WT_8.Alm_HiHi ro none 0
73 water_08_hi_alm hrtankbattery default periodic BIT WT_8.Alm_Hi ro none 0
74 water_08_tx_alm hrtankbattery default periodic BIT WT_8.Alm_Fail ro none 0
75 water_08_hihi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiHiLim 2 ro none
76 water_08_hi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiLim 2 ro none
77 water_08_max_height hrtankbattery default periodic FLOAT WT_8.Cfg_PVEUMax 2 ro none
78 water_09_level hrtankbattery default periodic FLOAT WT_9.Val 2 ro none
79 water_09_hihi_alm hrtankbattery default periodic BIT WT_9.Alm_HiHi ro none 0
80 water_09_hi_alm hrtankbattery default periodic BIT WT_9.Alm_Hi ro none 0
81 water_09_tx_alm hrtankbattery default periodic BIT WT_9.Alm_Fail ro none 0
82 water_09_hihi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiHiLim 2 ro none
83 water_09_hi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiLim 2 ro none
84 water_09_max_height hrtankbattery default periodic FLOAT WT_9.Cfg_PVEUMax 2 ro none
85 oil_run_tank hrtankbattery default periodic DINT OT_Selector ro none
86 oil_run_tank_volume hrtankbattery default periodic FLOAT Current_Oil_Tank_Volume 2 ro none
87 oil_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Oil_Tank_Volume 2 ro none
88 oil_01_level hrtankbattery default periodic FLOAT OT_1.Val 2 ro none
89 oil_01_hihi_alm hrtankbattery default periodic BIT OT_1.Alm_HiHi ro none 0
90 oil_01_hi_alm hrtankbattery default periodic BIT OT_1.Alm_Hi ro none 0
91 oil_01_tx_alm hrtankbattery default periodic BIT OT_1.Alm_Fail ro none 0
92 oil_01_hihi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiHiLim 2 ro none
93 oil_01_hi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiLim 2 ro none
94 oil_01_max_height hrtankbattery default periodic FLOAT OT_1.Cfg_PVEUMax 2 ro none
95 oil_02_level hrtankbattery default periodic FLOAT OT_2.Val 2 ro none
96 oil_02_hihi_alm hrtankbattery default periodic BIT OT_2.Alm_HiHi ro none 0
97 oil_02_hi_alm hrtankbattery default periodic BIT OT_2.Alm_Hi ro none 0
98 oil_02_tx_alm hrtankbattery default periodic BIT OT_2.Alm_Fail ro none 0
99 oil_02_hihi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiHiLim 2 ro none
100 oil_02_hi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiLim 2 ro none
101 oil_02_max_height hrtankbattery default periodic FLOAT OT_2.Cfg_PVEUMax 2 ro none
102 oil_03_level hrtankbattery default periodic FLOAT OT_3.Val 2 ro none
103 oil_03_hihi_alm hrtankbattery default periodic BIT OT_3.Alm_HiHi ro none 0
104 oil_03_hi_alm hrtankbattery default periodic BIT OT_3.Alm_Hi ro none 0
105 oil_03_tx_alm hrtankbattery default periodic BIT OT_3.Alm_Fail ro none 0
106 oil_03_hihi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiHiLim 2 ro none
107 oil_03_hi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiLim 2 ro none
108 oil_03_max_height hrtankbattery default periodic FLOAT OT_3.Cfg_PVEUMax 2 ro none
109 oil_04_level hrtankbattery default periodic FLOAT OT_4.Val 2 ro none
110 oil_04_hihi_alm hrtankbattery default periodic BIT OT_4.Alm_HiHi ro none 0
111 oil_04_hi_alm hrtankbattery default periodic BIT OT_4.Alm_Hi ro none 0
112 oil_04_tx_alm hrtankbattery default periodic BIT OT_4.Alm_Fail ro none 0
113 oil_04_hihi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiHiLim 2 ro none
114 oil_04_hi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiLim 2 ro none
115 oil_04_max_height hrtankbattery default periodic FLOAT OT_4.Cfg_PVEUMax 2 ro none
116 oil_05_level hrtankbattery default periodic FLOAT OT_5.Val 2 ro none
117 oil_05_hihi_alm hrtankbattery default periodic BIT OT_5.Alm_HiHi ro none 0
118 oil_05_hi_alm hrtankbattery default periodic BIT OT_5.Alm_Hi ro none 0
119 oil_05_tx_alm hrtankbattery default periodic BIT OT_5.Alm_Fail ro none 0
120 oil_05_hihi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiHiLim 2 ro none
121 oil_05_hi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiLim 2 ro none
122 oil_05_max_height hrtankbattery default periodic FLOAT OT_5.Cfg_PVEUMax 2 ro none
123 oil_06_level hrtankbattery default periodic FLOAT OT_6.Val 2 ro none
124 oil_06_hihi_alm hrtankbattery default periodic BIT OT_6.Alm_HiHi ro none 0
125 oil_06_hi_alm hrtankbattery default periodic BIT OT_6.Alm_Hi ro none 0
126 oil_06_tx_alm hrtankbattery default periodic BIT OT_6.Alm_Fail ro none 0
127 oil_06_hihi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiHiLim 2 ro none
128 oil_06_hi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiLim 2 ro none
129 oil_06_max_height hrtankbattery default periodic FLOAT OT_6.Cfg_PVEUMax 2 ro none
130 oil_07_level hrtankbattery default periodic FLOAT OT_7.Val 2 ro none
131 oil_07_hihi_alm hrtankbattery default periodic BIT OT_7.Alm_HiHi ro none 0
132 oil_07_hi_alm hrtankbattery default periodic BIT OT_7.Alm_Hi ro none 0
133 oil_07_tx_alm hrtankbattery default periodic BIT OT_7.Alm_Fail ro none 0
134 oil_07_hihi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiHiLim 2 ro none
135 oil_07_hi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiLim 2 ro none
136 oil_07_max_height hrtankbattery default periodic FLOAT OT_7.Cfg_PVEUMax 2 ro none
137 transfer_01_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Sts_Running ro none 0
138 transfer_01_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Alm_FailToStart ro none 0
139 transfer_01_discharge hrtankbattery default periodic FLOAT XferPump_01_Dis_PSI.Val 2 ro none
140 transfer_01_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_HiHi ro none 0
141 transfer_01_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_LoLo ro none 0
142 transfer_01_flow_rate hrtankbattery default periodic FLOAT XferPump_01_FlowRate.Val 2 ro none
143 transfer_01_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_HiHi ro none 0
144 transfer_01_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_LoLo ro none 0
145 transfer_01_3_phase_pwr_alm hrtankbattery default periodic BIT Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
146 transfer_02_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Sts_Running ro none 0
147 transfer_02_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Alm_FailToStart ro none 0
148 transfer_02_discharge hrtankbattery default periodic FLOAT XferPump_02_Dis_PSI.Val 2 ro none
149 transfer_02_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_HiHi ro none 0
150 transfer_02_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_LoLo ro none 0
151 transfer_02_flow_rate hrtankbattery default periodic FLOAT XferPump_02_FlowRate.Val 2 ro none
152 transfer_02_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_HiHi ro none 0
153 transfer_02_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_LoLo ro none 0
154 lact_01_permissive hrtankbattery default periodic BIT LACT_01_Permissive ro none 0
155 lact_01_sts hrtankbattery default periodic BIT LACT_01_Run_Status ro none 0
156 lact_01_alm hrtankbattery default periodic BIT LACT_01_Failure ro none 0
157 lact_01_oil_shutdown hrtankbattery default periodic BIT LACT_01_Bad_Oil_Shutdown ro none 0
158 lact_01_flow_rate hrtankbattery default periodic FLOAT Lact_01_Realtime_Flow_Rate 2 ro none
159 lact_01_bs_w hrtankbattery default periodic FLOAT Lact_01_BS_and_W_Reading 2 ro none
160 lact_01_daily_volume hrtankbattery default periodic FLOAT Lact_01_Current_Daily_Ind_Volume_Total 2 ro none
161 lact_01_prev_day hrtankbattery default periodic FLOAT Lact_01_History.Previous_Day_1 2 ro none
162 lact_02_permissive hrtankbattery default periodic BIT LACT_02_Permissive ro none 0
163 lact_02_sts hrtankbattery default periodic BIT LACT_02_Run_Status ro none 0
164 lact_02_alm hrtankbattery default periodic BIT LACT_02_Failure ro none 0
165 lact_02_oil_shutdown hrtankbattery default periodic BIT LACT_02_Bad_Oil_Shutdown ro none 0
166 lact_02_flow_rate hrtankbattery default periodic FLOAT Lact_02_Realtime_Flow_Rate 2 ro none
167 lact_02_bs_w hrtankbattery default periodic FLOAT Lact_02_BS_and_W_Reading 2 ro none
168 lact_02_daily_volume hrtankbattery default periodic FLOAT Lact_02_Current_Daily_Ind_Volume_Total 2 ro none
169 lact_02_prev_day hrtankbattery default periodic FLOAT Lact_02_History.Previous_Day_1 2 ro none
170 containment_high_alm hrtankbattery default periodic BIT Contain_Hi_Level.Alm_TgtDisagree ro none 0
171 h2s_alm hrtankbattery default periodic BIT H2s_Alarm.Alm_TgtDisagree ro none 0
172 tf_sales_battery_voltage hrtankbattery default periodic FLOAT Val_Sales_TF_Battery_Voltage 2 ro none
173 tf_sales_charger_voltage hrtankbattery default periodic FLOAT Val_Sales_TF_Charger_Voltage 2 ro none
174 tf_sales_differential_pressure hrtankbattery default periodic FLOAT Val_Sales_TF_Differential_Pressure 2 ro none
175 tf_sales_flow_rate hrtankbattery default periodic FLOAT Val_Sales_TF_Flow_Rate 2 ro none
176 tf_sales_lifetime hrtankbattery default periodic FLOAT Val_Sales_TF_Lifetime 2 ro none
177 tf_sales_static_pressure hrtankbattery default periodic FLOAT Val_Sales_TF_Static_Pressure 2 ro none
178 tf_sales_temperature hrtankbattery default periodic FLOAT Val_Sales_TF_Temperature 2 ro none
179 tf_sales_yesterday_total hrtankbattery default periodic FLOAT Val_Sales_TF_Yesterday_Total 2 ro none
180 tf_v1_battery_voltage hrtankbattery default periodic FLOAT Val_V1_TF_Battery_Voltage 2 ro none
181 tf_v1_charger_voltage hrtankbattery default periodic FLOAT Val_V1_TF_Charger_Voltage 2 ro none
182 tf_v1_differential_pressure hrtankbattery default periodic FLOAT Val_V1_TF_Differential_Pressure 2 ro none
183 tf_v1_flow_rate hrtankbattery default periodic FLOAT Val_V1_TF_Flow_Rate 2 ro none
184 tf_v1_lifetime hrtankbattery default periodic FLOAT Val_V1_TF_Lifetime 2 ro none
185 tf_v1_static_pressure hrtankbattery default periodic FLOAT Val_V1_TF_Static_Pressure 2 ro none
186 tf_v1_temperature hrtankbattery default periodic FLOAT Val_V1_TF_Temperature 2 ro none
187 tf_v1_yesterday_total hrtankbattery default periodic FLOAT Val_V1_TF_Yesterday_Total 2 ro none
188 tf_v2_battery_voltage hrtankbattery default periodic FLOAT Val_V2_TF_Battery_Voltage 2 ro none
189 tf_v2_charger_voltage hrtankbattery default periodic FLOAT Val_V2_TF_Charger_Voltage 2 ro none
190 tf_v2_differential_pressure hrtankbattery default periodic FLOAT Val_V2_TF_Differential_Pressure 2 ro none
191 tf_v2_flow_rate hrtankbattery default periodic FLOAT Val_V2_TF_Flow_Rate 2 ro none
192 tf_v2_lifetime hrtankbattery default periodic FLOAT Val_V2_TF_Lifetime 2 ro none
193 tf_v2_static_pressure hrtankbattery default periodic FLOAT Val_V2_TF_Static_Pressure 2 ro none
194 tf_v2_temperature hrtankbattery default periodic FLOAT Val_V2_TF_Temperature 2 ro none
195 tf_v2_yesterday_total hrtankbattery default periodic FLOAT Val_V2_TF_Yesterday_Total 2 ro none
196 tf_v3_battery_voltage hrtankbattery default periodic FLOAT Val_V3_TF_Battery_Voltage 2 ro none
197 tf_v3_charger_voltage hrtankbattery default periodic FLOAT Val_V3_TF_Charger_Voltage 2 ro none
198 tf_v3_differential_pressure hrtankbattery default periodic FLOAT Val_V3_TF_Differential_Pressure 2 ro none
199 tf_v3_flow_rate hrtankbattery default periodic FLOAT Val_V3_TF_Flow_Rate 2 ro none
200 tf_v3_lifetime hrtankbattery default periodic FLOAT Val_V3_TF_Lifetime 2 ro none
201 tf_v3_static_pressure hrtankbattery default periodic FLOAT Val_V3_TF_Static_Pressure 2 ro none
202 tf_v3_temperature hrtankbattery default periodic FLOAT Val_V3_TF_Temperature 2 ro none
203 tf_v3_yesterday_total hrtankbattery default periodic FLOAT Val_V3_TF_Yesterday_Total 2 ro none
204 tf_v4_battery_voltage hrtankbattery default periodic FLOAT Val_V4_TF_Battery_Voltage 2 ro none
205 tf_v4_charger_voltage hrtankbattery default periodic FLOAT Val_V4_TF_Charger_Voltage 2 ro none
206 tf_v4_differential_pressure hrtankbattery default periodic FLOAT Val_V4_TF_Differential_Pressure 2 ro none
207 tf_v4_flow_rate hrtankbattery default periodic FLOAT Val_V4_TF_Flow_Rate 2 ro none
208 tf_v4_lifetime hrtankbattery default periodic FLOAT Val_V4_TF_Lifetime 2 ro none
209 tf_v4_static_pressure hrtankbattery default periodic FLOAT Val_V4_TF_Static_Pressure 2 ro none
210 tf_v4_temperature hrtankbattery default periodic FLOAT Val_V4_TF_Temperature 2 ro none
211 tf_v4_yesterday_total hrtankbattery default periodic FLOAT Val_V4_TF_Yesterday_Total 2 ro none
212 tf_v5_battery_voltage hrtankbattery default periodic FLOAT Val_V5_TF_Battery_Voltage 2 ro none
213 tf_v5_charger_voltage hrtankbattery default periodic FLOAT Val_V5_TF_Charger_Voltage 2 ro none
214 tf_v5_differential_pressure hrtankbattery default periodic FLOAT Val_V5_TF_Differential_Pressure 2 ro none
215 tf_v5_flow_rate hrtankbattery default periodic FLOAT Val_V5_TF_Flow_Rate 2 ro none
216 tf_v5_lifetime hrtankbattery default periodic FLOAT Val_V5_TF_Lifetime 2 ro none
217 tf_v5_static_pressure hrtankbattery default periodic FLOAT Val_V5_TF_Static_Pressure 2 ro none
218 tf_v5_temperature hrtankbattery default periodic FLOAT Val_V5_TF_Temperature 2 ro none
219 tf_v5_yesterday_total hrtankbattery default periodic FLOAT Val_V5_TF_Yesterday_Total 2 ro none
220 vessel_1_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Gas_FR 2 ro none
221 vessel_1_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_FR 2 ro none
222 vessel_1_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_1_OIL_LastMonth_Accum 2 ro none
223 vessel_1_oil_month hrtankbattery default periodic FLOAT Val_Vessel_1_OIL_Month_Accum 2 ro none
224 vessel_1_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_T1 2 ro none
225 vessel_1_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Temp 2 ro none
226 vessel_1_oil_today hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Todays_Accum 2 ro none
227 vessel_1_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Yest_Accum 2 ro none
228 vessel_1_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Water_FR 2 ro none
229 vessel_1_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_1_Water_LastMonth_Accum 2 ro none
230 vessel_1_water_month hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Month_Accum 2 ro none
231 vessel_1_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_1_Water_T1 2 ro none
232 vessel_1_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Temp 2 ro none
233 vessel_1_water_today hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Todays_Accum 2 ro none
234 vessel_1_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Yest_Accum 2 ro none
235 vessel_2_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_2_Gas_FR 2 ro none
236 vessel_2_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_FR 2 ro none
237 vessel_2_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_LastMonth_Accum 2 ro none
238 vessel_2_oil_month hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_Month_Accum 2 ro none
239 vessel_2_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_T1 2 ro none
240 vessel_2_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_Temp 2 ro none
241 vessel_2_oil_today hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_Todays_Accum 2 ro none
242 vessel_2_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_Yest_Accum 2 ro none
243 vessel_2_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_2_Water_FR 2 ro none
244 vessel_2_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_2_Water_LastMonth_Accum 2 ro none
245 vessel_2_water_month hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Month_Accum 2 ro none
246 vessel_2_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_2_Water_T1 2 ro none
247 vessel_2_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Temp 2 ro none
248 vessel_2_water_today hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Todays_Accum 2 ro none
249 vessel_2_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Yest_Accum 2 ro none
250 vessel_3_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_3_Gas_FR 2 ro none
251 vessel_3_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_FR 2 ro none
252 vessel_3_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_LastMonth_Accum 2 ro none
253 vessel_3_oil_month hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_Month_Accum 2 ro none
254 vessel_3_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_T1 2 ro none
255 vessel_3_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_Temp 2 ro none
256 vessel_3_oil_today hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_Todays_Accum 2 ro none
257 vessel_3_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_Yest_Accum 2 ro none
258 vessel_3_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_3_Water_FR 2 ro none
259 vessel_3_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_3_Water_LastMonth_Accum 2 ro none
260 vessel_3_water_month hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Month_Accum 2 ro none
261 vessel_3_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_3_Water_T1 2 ro none
262 vessel_3_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Temp 2 ro none
263 vessel_3_water_today hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Todays_Accum 2 ro none
264 vessel_3_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Yest_Accum 2 ro none
265 vessel_4_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_4_Gas_FR 2 ro none
266 vessel_4_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_FR 2 ro none
267 vessel_4_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_LastMonth_Accum 2 ro none
268 vessel_4_oil_month hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_Month_Accum 2 ro none
269 vessel_4_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_T1 2 ro none
270 vessel_4_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_Temp 2 ro none
271 vessel_4_oil_today hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_Todays_Accum 2 ro none
272 vessel_4_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_Yest_Accum 2 ro none
273 vessel_4_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_4_Water_FR 2 ro none
274 vessel_4_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_4_Water_LastMonth_Accum 2 ro none
275 vessel_4_water_month hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Month_Accum 2 ro none
276 vessel_4_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_4_Water_T1 2 ro none
277 vessel_4_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Temp 2 ro none
278 vessel_4_water_today hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Todays_Accum 2 ro none
279 vessel_4_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Yest_Accum 2 ro none
280 vessel_5_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_5_Gas_FR 2 ro none
281 vessel_5_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_FR 2 ro none
282 vessel_5_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_LastMonth_Accum 2 ro none
283 vessel_5_oil_month hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_Month_Accum 2 ro none
284 vessel_5_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_T1 2 ro none
285 vessel_5_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_Temp 2 ro none
286 vessel_5_oil_today hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_Todays_Accum 2 ro none
287 vessel_5_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_Yest_Accum 2 ro none
288 vessel_5_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_5_Water_FR 2 ro none
289 vessel_5_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_5_Water_LastMonth_Accum 2 ro none
290 vessel_5_water_month hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Month_Accum 2 ro none
291 vessel_5_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_5_Water_T1 2 ro none
292 vessel_5_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Temp 2 ro none
293 vessel_5_water_today hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Todays_Accum 2 ro none
294 vessel_5_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Yest_Accum 2 ro none
295 wtp_1_flow_rate hrtankbattery default periodic FLOAT Val_WTP_FM_FR_MBS 2 ro none
296 wtp_1_last_month hrtankbattery default periodic FLOAT Val_WTP_FM_LastMonth_Accum 2 ro none
297 wtp_1_month hrtankbattery default periodic FLOAT Val_WTP_FM_Month_Accum 2 ro none
298 wtp_1_net_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T1_MBS 2 ro none
299 wtp_1_forward_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T2_MBS 2 ro none
300 wtp_1_reverse_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T3_MBS 2 ro none
301 wtp_1_today hrtankbattery default periodic FLOAT Val_WTP_FM_Todays_Accum 2 ro none
302 wtp_1_yesterday hrtankbattery default periodic FLOAT Val_WTP_FM_Yest_Accum 2 ro none

View File

@@ -0,0 +1,298 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit,bitMap,msecSample
plc_io_fault_alm,hrtankbattery,default,periodic,BIT,IO_Fault_Alarm,,,ro,,,none,,,,,,,,,0,
plc_fault,hrtankbattery,default,periodic,BIT,PLC_FAULT,,,ro,,,none,,,,,,,,,0,
analog_01_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_01,,,ro,,,none,,,,,,,,,0,
analog_02_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_02,,,ro,,,none,,,,,,,,,0,
analog_03_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_03,,,ro,,,none,,,,,,,,,0,
analog_04_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_04,,,ro,,,none,,,,,,,,,0,
analog_05_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_05,,,ro,,,none,,,,,,,,,0,
analog_06_alm,hrtankbattery,default,periodic,BIT,Fault_Analog_Mod_06,,,ro,,,none,,,,,,,,,0,
ac_power_alm,hrtankbattery,default,periodic,BIT,Alm_AC_Pwr.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
ups_alm,hrtankbattery,default,periodic,BIT,Alm_UPS.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
dc_power_alm,hrtankbattery,default,periodic,BIT,DC_Power_OK.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
three_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Three_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
count_oil_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_OIL_TANKS,,,ro,,,none,,,,,,,,,,
count_water_tanks,hrtankbattery,default,periodic,DINT,NUMBER_OF_WTR_TANKS,,,ro,,,none,,,,,,,,,,
count_flow_meters,hrtankbattery,default,periodic,DINT,NUMBER_OF_FLOWMETERS,,,ro,,,none,,,,,,,,,,
count_transfer_pumps,hrtankbattery,default,periodic,DINT,NUMBER_OF_TRANSFER_PUMPS,,,ro,,,none,,,,,,,,,,
count_lacts,hrtankbattery,default,periodic,DINT,NUMBER_OF_LACTS,,,ro,,,none,,,,,,,,,,
water_run_tank,hrtankbattery,default,periodic,DINT,WT_Selector,,,ro,,,none,,,,,,,,,,
water_01_level,hrtankbattery,default,periodic,FLOAT,WT_1.Val,2,,ro,,,none,,,,,,,,,,
water_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Curent_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Water_Tank_Volume,2,,ro,,,none,,,,,,,,,,
water_01_hihi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_01_hi_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_01_tx_alm,hrtankbattery,default,periodic,BIT,WT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_01_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_01_max_height,hrtankbattery,default,periodic,FLOAT,WT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_02_level,hrtankbattery,default,periodic,FLOAT,WT_2.Val,2,,ro,,,none,,,,,,,,,,
water_02_hihi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_02_hi_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_02_tx_alm,hrtankbattery,default,periodic,BIT,WT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_02_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_02_max_height,hrtankbattery,default,periodic,FLOAT,WT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_03_level,hrtankbattery,default,periodic,FLOAT,WT_3.Val,2,,ro,,,none,,,,,,,,,,
water_03_hihi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_03_hi_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_03_tx_alm,hrtankbattery,default,periodic,BIT,WT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_03_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_03_max_height,hrtankbattery,default,periodic,FLOAT,WT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_04_level,hrtankbattery,default,periodic,FLOAT,WT_4.Val,2,,ro,,,none,,,,,,,,,,
water_04_hihi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_04_hi_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_04_tx_alm,hrtankbattery,default,periodic,BIT,WT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_04_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_04_max_height,hrtankbattery,default,periodic,FLOAT,WT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_05_level,hrtankbattery,default,periodic,FLOAT,WT_5.Val,2,,ro,,,none,,,,,,,,,,
water_05_hihi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_05_hi_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_05_tx_alm,hrtankbattery,default,periodic,BIT,WT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_05_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_05_max_height,hrtankbattery,default,periodic,FLOAT,WT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_06_level,hrtankbattery,default,periodic,FLOAT,WT_6.Val,2,,ro,,,none,,,,,,,,,,
water_06_hihi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_06_hi_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_06_tx_alm,hrtankbattery,default,periodic,BIT,WT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_06_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_06_max_height,hrtankbattery,default,periodic,FLOAT,WT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_07_level,hrtankbattery,default,periodic,FLOAT,WT_7.Val,2,,ro,,,none,,,,,,,,,,
water_07_hihi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_07_hi_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_07_tx_alm,hrtankbattery,default,periodic,BIT,WT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_07_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_07_max_height,hrtankbattery,default,periodic,FLOAT,WT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_08_level,hrtankbattery,default,periodic,FLOAT,WT_8.Val,2,,ro,,,none,,,,,,,,,,
water_08_hihi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_08_hi_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_08_tx_alm,hrtankbattery,default,periodic,BIT,WT_8.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_08_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_08_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_8.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_08_max_height,hrtankbattery,default,periodic,FLOAT,WT_8.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
water_09_level,hrtankbattery,default,periodic,FLOAT,WT_9.Val,2,,ro,,,none,,,,,,,,,,
water_09_hihi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
water_09_hi_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Hi,,,ro,,,none,,,,,,,,,0,
water_09_tx_alm,hrtankbattery,default,periodic,BIT,WT_9.Alm_Fail,,,ro,,,none,,,,,,,,,0,
water_09_hihi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
water_09_hi_spt,hrtankbattery,default,periodic,FLOAT,WT_9.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
water_09_max_height,hrtankbattery,default,periodic,FLOAT,WT_9.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_run_tank,hrtankbattery,default,periodic,DINT,OT_Selector,,,ro,,,none,,,,,,,,,,
oil_run_tank_volume,hrtankbattery,default,periodic,FLOAT,Current_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_gauge_off_volume,hrtankbattery,default,periodic,FLOAT,Gauge_Off_Oil_Tank_Volume,2,,ro,,,none,,,,,,,,,,
oil_01_level,hrtankbattery,default,periodic,FLOAT,OT_1.Val,2,,ro,,,none,,,,,,,,,,
oil_01_hihi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_01_hi_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_01_tx_alm,hrtankbattery,default,periodic,BIT,OT_1.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_01_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_01_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_1.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_01_max_height,hrtankbattery,default,periodic,FLOAT,OT_1.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_02_level,hrtankbattery,default,periodic,FLOAT,OT_2.Val,2,,ro,,,none,,,,,,,,,,
oil_02_hihi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_02_hi_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_02_tx_alm,hrtankbattery,default,periodic,BIT,OT_2.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_02_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_02_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_2.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_02_max_height,hrtankbattery,default,periodic,FLOAT,OT_2.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_03_level,hrtankbattery,default,periodic,FLOAT,OT_3.Val,2,,ro,,,none,,,,,,,,,,
oil_03_hihi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_03_hi_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_03_tx_alm,hrtankbattery,default,periodic,BIT,OT_3.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_03_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_03_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_3.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_03_max_height,hrtankbattery,default,periodic,FLOAT,OT_3.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_04_level,hrtankbattery,default,periodic,FLOAT,OT_4.Val,2,,ro,,,none,,,,,,,,,,
oil_04_hihi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_04_hi_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_04_tx_alm,hrtankbattery,default,periodic,BIT,OT_4.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_04_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_04_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_4.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_04_max_height,hrtankbattery,default,periodic,FLOAT,OT_4.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_05_level,hrtankbattery,default,periodic,FLOAT,OT_5.Val,2,,ro,,,none,,,,,,,,,,
oil_05_hihi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_05_hi_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_05_tx_alm,hrtankbattery,default,periodic,BIT,OT_5.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_05_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_05_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_5.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_05_max_height,hrtankbattery,default,periodic,FLOAT,OT_5.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_06_level,hrtankbattery,default,periodic,FLOAT,OT_6.Val,2,,ro,,,none,,,,,,,,,,
oil_06_hihi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_06_hi_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_06_tx_alm,hrtankbattery,default,periodic,BIT,OT_6.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_06_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_06_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_6.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_06_max_height,hrtankbattery,default,periodic,FLOAT,OT_6.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
oil_07_level,hrtankbattery,default,periodic,FLOAT,OT_7.Val,2,,ro,,,none,,,,,,,,,,
oil_07_hihi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
oil_07_hi_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Hi,,,ro,,,none,,,,,,,,,0,
oil_07_tx_alm,hrtankbattery,default,periodic,BIT,OT_7.Alm_Fail,,,ro,,,none,,,,,,,,,0,
oil_07_hihi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiHiLim,2,,ro,,,none,,,,,,,,,,
oil_07_hi_spt,hrtankbattery,default,periodic,FLOAT,OT_7.PSet_HiLim,2,,ro,,,none,,,,,,,,,,
oil_07_max_height,hrtankbattery,default,periodic,FLOAT,OT_7.Cfg_PVEUMax,2,,ro,,,none,,,,,,,,,,
transfer_01_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_01_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_01.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_01_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_01_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_01_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_01_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_01_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_01_3_phase_pwr_alm,hrtankbattery,default,periodic,BIT,Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
transfer_02_sts,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Sts_Running,,,ro,,,none,,,,,,,,,0,
transfer_02_alm,hrtankbattery,default,periodic,BIT,XFER_PUMP_Motor_02.Alm_FailToStart,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge,hrtankbattery,default,periodic,FLOAT,XferPump_02_Dis_PSI.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_discharge_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_discharge_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_Dis_PSI.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate,hrtankbattery,default,periodic,FLOAT,XferPump_02_FlowRate.Val,2,,ro,,,none,,,,,,,,,,
transfer_02_flow_rate_hihi_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_HiHi,,,ro,,,none,,,,,,,,,0,
transfer_02_flow_rate_lolo_alm,hrtankbattery,default,periodic,BIT,XferPump_02_FlowRate.Alm_LoLo,,,ro,,,none,,,,,,,,,0,
lact_01_permissive,hrtankbattery,default,periodic,BIT,LACT_01_Permissive,,,ro,,,none,,,,,,,,,0,
lact_01_sts,hrtankbattery,default,periodic,BIT,LACT_01_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_01_alm,hrtankbattery,default,periodic,BIT,LACT_01_Failure,,,ro,,,none,,,,,,,,,0,
lact_01_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_01_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_01_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_01_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_01_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_01_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_01_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_01_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_01_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_01_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
lact_02_permissive,hrtankbattery,default,periodic,BIT,LACT_02_Permissive,,,ro,,,none,,,,,,,,,0,
lact_02_sts,hrtankbattery,default,periodic,BIT,LACT_02_Run_Status,,,ro,,,none,,,,,,,,,0,
lact_02_alm,hrtankbattery,default,periodic,BIT,LACT_02_Failure,,,ro,,,none,,,,,,,,,0,
lact_02_oil_shutdown,hrtankbattery,default,periodic,BIT,LACT_02_Bad_Oil_Shutdown,,,ro,,,none,,,,,,,,,0,
lact_02_flow_rate,hrtankbattery,default,periodic,FLOAT,Lact_02_Realtime_Flow_Rate,2,,ro,,,none,,,,,,,,,,
lact_02_bs_w,hrtankbattery,default,periodic,FLOAT,Lact_02_BS_and_W_Reading,2,,ro,,,none,,,,,,,,,,
lact_02_daily_volume,hrtankbattery,default,periodic,FLOAT,Lact_02_Current_Daily_Ind_Volume_Total,2,,ro,,,none,,,,,,,,,,
lact_02_prev_day,hrtankbattery,default,periodic,FLOAT,Lact_02_History.Previous_Day_1,2,,ro,,,none,,,,,,,,,,
containment_high_alm,hrtankbattery,default,periodic,BIT,Contain_Hi_Level.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
h2s_alm,hrtankbattery,default,periodic,BIT,H2s_Alarm.Alm_TgtDisagree,,,ro,,,none,,,,,,,,,0,
tf_sales_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_sales_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_sales_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_sales_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_sales_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_sales_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_sales_temperature,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_sales_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_Sales_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v1_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v1_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v1_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v1_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v1_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v1_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v1_temperature,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v1_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V1_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v2_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v2_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v2_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v2_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v2_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v2_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v2_temperature,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v2_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V2_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v3_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v3_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v3_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v3_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v3_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v3_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v3_temperature,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v3_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V3_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v4_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v4_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v4_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v4_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v4_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v4_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v4_temperature,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v4_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V4_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
tf_v5_battery_voltage,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Battery_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v5_charger_voltage,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Charger_Voltage,2,,ro,,,none,,,,,,,,,,
tf_v5_differential_pressure,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Differential_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v5_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Flow_Rate,2,,ro,,,none,,,,,,,,,,
tf_v5_lifetime,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Lifetime,2,,ro,,,none,,,,,,,,,,
tf_v5_static_pressure,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Static_Pressure,2,,ro,,,none,,,,,,,,,,
tf_v5_temperature,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Temperature,2,,ro,,,none,,,,,,,,,,
tf_v5_yesterday_total,hrtankbattery,default,periodic,FLOAT,Val_V5_TF_Yesterday_Total,2,,ro,,,none,,,,,,,,,,
vessel_1_gas_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Gas_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Oil_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_1_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_1_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_1_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_1_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_1_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_2_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_2_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_2_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_2_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_2_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_3_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_3_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_3_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_3_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_3_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_4_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_4_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_4_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_4_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_4_Water_Vest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_FR,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_T1,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_Temp,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Oil_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_oil_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_OIL_Yest_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_FR,2,,ro,,,none,,,,,,,,,,
vessel_5_water_last_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_month,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Month_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_lifetime,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_T1,2,,ro,,,none,,,,,,,,,,
vessel_5_water_temperature,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Temp,2,,ro,,,none,,,,,,,,,,
vessel_5_water_today,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Todays_Accum,2,,ro,,,none,,,,,,,,,,
vessel_5_water_yesterday,hrtankbattery,default,periodic,FLOAT,Val_Vessel_5_Water_Yest_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_flow_rate,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_FR_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_last_month,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_LastMonth_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_month,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Month_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_net_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T1_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_forward_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T2_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_reverse_volume,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_T3_MBS,2,,ro,,,none,,,,,,,,,,
wtp_1_today,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Todays_Accum,2,,ro,,,none,,,,,,,,,,
wtp_1_yesterday,hrtankbattery,default,periodic,FLOAT,Val_WTP_FM_Yest_Accum,2,,ro,,,none,,,,,,,,,,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit bitMap msecSample
2 plc_io_fault_alm hrtankbattery default periodic BIT IO_Fault_Alarm ro none 0
3 plc_fault hrtankbattery default periodic BIT PLC_FAULT ro none 0
4 analog_01_alm hrtankbattery default periodic BIT Fault_Analog_Mod_01 ro none 0
5 analog_02_alm hrtankbattery default periodic BIT Fault_Analog_Mod_02 ro none 0
6 analog_03_alm hrtankbattery default periodic BIT Fault_Analog_Mod_03 ro none 0
7 analog_04_alm hrtankbattery default periodic BIT Fault_Analog_Mod_04 ro none 0
8 analog_05_alm hrtankbattery default periodic BIT Fault_Analog_Mod_05 ro none 0
9 analog_06_alm hrtankbattery default periodic BIT Fault_Analog_Mod_06 ro none 0
10 ac_power_alm hrtankbattery default periodic BIT Alm_AC_Pwr.Alm_TgtDisagree ro none 0
11 ups_alm hrtankbattery default periodic BIT Alm_UPS.Alm_TgtDisagree ro none 0
12 dc_power_alm hrtankbattery default periodic BIT DC_Power_OK.Alm_TgtDisagree ro none 0
13 three_phase_pwr_alm hrtankbattery default periodic BIT Three_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
14 count_oil_tanks hrtankbattery default periodic DINT NUMBER_OF_OIL_TANKS ro none
15 count_water_tanks hrtankbattery default periodic DINT NUMBER_OF_WTR_TANKS ro none
16 count_flow_meters hrtankbattery default periodic DINT NUMBER_OF_FLOWMETERS ro none
17 count_transfer_pumps hrtankbattery default periodic DINT NUMBER_OF_TRANSFER_PUMPS ro none
18 count_lacts hrtankbattery default periodic DINT NUMBER_OF_LACTS ro none
19 water_run_tank hrtankbattery default periodic DINT WT_Selector ro none
20 water_01_level hrtankbattery default periodic FLOAT WT_1.Val 2 ro none
21 water_run_tank_volume hrtankbattery default periodic FLOAT Curent_Water_Tank_Volume 2 ro none
22 water_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Water_Tank_Volume 2 ro none
23 water_01_hihi_alm hrtankbattery default periodic BIT WT_1.Alm_HiHi ro none 0
24 water_01_hi_alm hrtankbattery default periodic BIT WT_1.Alm_Hi ro none 0
25 water_01_tx_alm hrtankbattery default periodic BIT WT_1.Alm_Fail ro none 0
26 water_01_hihi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiHiLim 2 ro none
27 water_01_hi_spt hrtankbattery default periodic FLOAT WT_1.PSet_HiLim 2 ro none
28 water_01_max_height hrtankbattery default periodic FLOAT WT_1.Cfg_PVEUMax 2 ro none
29 water_02_level hrtankbattery default periodic FLOAT WT_2.Val 2 ro none
30 water_02_hihi_alm hrtankbattery default periodic BIT WT_2.Alm_HiHi ro none 0
31 water_02_hi_alm hrtankbattery default periodic BIT WT_2.Alm_Hi ro none 0
32 water_02_tx_alm hrtankbattery default periodic BIT WT_2.Alm_Fail ro none 0
33 water_02_hihi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiHiLim 2 ro none
34 water_02_hi_spt hrtankbattery default periodic FLOAT WT_2.PSet_HiLim 2 ro none
35 water_02_max_height hrtankbattery default periodic FLOAT WT_2.Cfg_PVEUMax 2 ro none
36 water_03_level hrtankbattery default periodic FLOAT WT_3.Val 2 ro none
37 water_03_hihi_alm hrtankbattery default periodic BIT WT_3.Alm_HiHi ro none 0
38 water_03_hi_alm hrtankbattery default periodic BIT WT_3.Alm_Hi ro none 0
39 water_03_tx_alm hrtankbattery default periodic BIT WT_3.Alm_Fail ro none 0
40 water_03_hihi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiHiLim 2 ro none
41 water_03_hi_spt hrtankbattery default periodic FLOAT WT_3.PSet_HiLim 2 ro none
42 water_03_max_height hrtankbattery default periodic FLOAT WT_3.Cfg_PVEUMax 2 ro none
43 water_04_level hrtankbattery default periodic FLOAT WT_4.Val 2 ro none
44 water_04_hihi_alm hrtankbattery default periodic BIT WT_4.Alm_HiHi ro none 0
45 water_04_hi_alm hrtankbattery default periodic BIT WT_4.Alm_Hi ro none 0
46 water_04_tx_alm hrtankbattery default periodic BIT WT_4.Alm_Fail ro none 0
47 water_04_hihi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiHiLim 2 ro none
48 water_04_hi_spt hrtankbattery default periodic FLOAT WT_4.PSet_HiLim 2 ro none
49 water_04_max_height hrtankbattery default periodic FLOAT WT_4.Cfg_PVEUMax 2 ro none
50 water_05_level hrtankbattery default periodic FLOAT WT_5.Val 2 ro none
51 water_05_hihi_alm hrtankbattery default periodic BIT WT_5.Alm_HiHi ro none 0
52 water_05_hi_alm hrtankbattery default periodic BIT WT_5.Alm_Hi ro none 0
53 water_05_tx_alm hrtankbattery default periodic BIT WT_5.Alm_Fail ro none 0
54 water_05_hihi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiHiLim 2 ro none
55 water_05_hi_spt hrtankbattery default periodic FLOAT WT_5.PSet_HiLim 2 ro none
56 water_05_max_height hrtankbattery default periodic FLOAT WT_5.Cfg_PVEUMax 2 ro none
57 water_06_level hrtankbattery default periodic FLOAT WT_6.Val 2 ro none
58 water_06_hihi_alm hrtankbattery default periodic BIT WT_6.Alm_HiHi ro none 0
59 water_06_hi_alm hrtankbattery default periodic BIT WT_6.Alm_Hi ro none 0
60 water_06_tx_alm hrtankbattery default periodic BIT WT_6.Alm_Fail ro none 0
61 water_06_hihi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiHiLim 2 ro none
62 water_06_hi_spt hrtankbattery default periodic FLOAT WT_6.PSet_HiLim 2 ro none
63 water_06_max_height hrtankbattery default periodic FLOAT WT_6.Cfg_PVEUMax 2 ro none
64 water_07_level hrtankbattery default periodic FLOAT WT_7.Val 2 ro none
65 water_07_hihi_alm hrtankbattery default periodic BIT WT_7.Alm_HiHi ro none 0
66 water_07_hi_alm hrtankbattery default periodic BIT WT_7.Alm_Hi ro none 0
67 water_07_tx_alm hrtankbattery default periodic BIT WT_7.Alm_Fail ro none 0
68 water_07_hihi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiHiLim 2 ro none
69 water_07_hi_spt hrtankbattery default periodic FLOAT WT_7.PSet_HiLim 2 ro none
70 water_07_max_height hrtankbattery default periodic FLOAT WT_7.Cfg_PVEUMax 2 ro none
71 water_08_level hrtankbattery default periodic FLOAT WT_8.Val 2 ro none
72 water_08_hihi_alm hrtankbattery default periodic BIT WT_8.Alm_HiHi ro none 0
73 water_08_hi_alm hrtankbattery default periodic BIT WT_8.Alm_Hi ro none 0
74 water_08_tx_alm hrtankbattery default periodic BIT WT_8.Alm_Fail ro none 0
75 water_08_hihi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiHiLim 2 ro none
76 water_08_hi_spt hrtankbattery default periodic FLOAT WT_8.PSet_HiLim 2 ro none
77 water_08_max_height hrtankbattery default periodic FLOAT WT_8.Cfg_PVEUMax 2 ro none
78 water_09_level hrtankbattery default periodic FLOAT WT_9.Val 2 ro none
79 water_09_hihi_alm hrtankbattery default periodic BIT WT_9.Alm_HiHi ro none 0
80 water_09_hi_alm hrtankbattery default periodic BIT WT_9.Alm_Hi ro none 0
81 water_09_tx_alm hrtankbattery default periodic BIT WT_9.Alm_Fail ro none 0
82 water_09_hihi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiHiLim 2 ro none
83 water_09_hi_spt hrtankbattery default periodic FLOAT WT_9.PSet_HiLim 2 ro none
84 water_09_max_height hrtankbattery default periodic FLOAT WT_9.Cfg_PVEUMax 2 ro none
85 oil_run_tank hrtankbattery default periodic DINT OT_Selector ro none
86 oil_run_tank_volume hrtankbattery default periodic FLOAT Current_Oil_Tank_Volume 2 ro none
87 oil_gauge_off_volume hrtankbattery default periodic FLOAT Gauge_Off_Oil_Tank_Volume 2 ro none
88 oil_01_level hrtankbattery default periodic FLOAT OT_1.Val 2 ro none
89 oil_01_hihi_alm hrtankbattery default periodic BIT OT_1.Alm_HiHi ro none 0
90 oil_01_hi_alm hrtankbattery default periodic BIT OT_1.Alm_Hi ro none 0
91 oil_01_tx_alm hrtankbattery default periodic BIT OT_1.Alm_Fail ro none 0
92 oil_01_hihi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiHiLim 2 ro none
93 oil_01_hi_spt hrtankbattery default periodic FLOAT OT_1.PSet_HiLim 2 ro none
94 oil_01_max_height hrtankbattery default periodic FLOAT OT_1.Cfg_PVEUMax 2 ro none
95 oil_02_level hrtankbattery default periodic FLOAT OT_2.Val 2 ro none
96 oil_02_hihi_alm hrtankbattery default periodic BIT OT_2.Alm_HiHi ro none 0
97 oil_02_hi_alm hrtankbattery default periodic BIT OT_2.Alm_Hi ro none 0
98 oil_02_tx_alm hrtankbattery default periodic BIT OT_2.Alm_Fail ro none 0
99 oil_02_hihi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiHiLim 2 ro none
100 oil_02_hi_spt hrtankbattery default periodic FLOAT OT_2.PSet_HiLim 2 ro none
101 oil_02_max_height hrtankbattery default periodic FLOAT OT_2.Cfg_PVEUMax 2 ro none
102 oil_03_level hrtankbattery default periodic FLOAT OT_3.Val 2 ro none
103 oil_03_hihi_alm hrtankbattery default periodic BIT OT_3.Alm_HiHi ro none 0
104 oil_03_hi_alm hrtankbattery default periodic BIT OT_3.Alm_Hi ro none 0
105 oil_03_tx_alm hrtankbattery default periodic BIT OT_3.Alm_Fail ro none 0
106 oil_03_hihi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiHiLim 2 ro none
107 oil_03_hi_spt hrtankbattery default periodic FLOAT OT_3.PSet_HiLim 2 ro none
108 oil_03_max_height hrtankbattery default periodic FLOAT OT_3.Cfg_PVEUMax 2 ro none
109 oil_04_level hrtankbattery default periodic FLOAT OT_4.Val 2 ro none
110 oil_04_hihi_alm hrtankbattery default periodic BIT OT_4.Alm_HiHi ro none 0
111 oil_04_hi_alm hrtankbattery default periodic BIT OT_4.Alm_Hi ro none 0
112 oil_04_tx_alm hrtankbattery default periodic BIT OT_4.Alm_Fail ro none 0
113 oil_04_hihi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiHiLim 2 ro none
114 oil_04_hi_spt hrtankbattery default periodic FLOAT OT_4.PSet_HiLim 2 ro none
115 oil_04_max_height hrtankbattery default periodic FLOAT OT_4.Cfg_PVEUMax 2 ro none
116 oil_05_level hrtankbattery default periodic FLOAT OT_5.Val 2 ro none
117 oil_05_hihi_alm hrtankbattery default periodic BIT OT_5.Alm_HiHi ro none 0
118 oil_05_hi_alm hrtankbattery default periodic BIT OT_5.Alm_Hi ro none 0
119 oil_05_tx_alm hrtankbattery default periodic BIT OT_5.Alm_Fail ro none 0
120 oil_05_hihi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiHiLim 2 ro none
121 oil_05_hi_spt hrtankbattery default periodic FLOAT OT_5.PSet_HiLim 2 ro none
122 oil_05_max_height hrtankbattery default periodic FLOAT OT_5.Cfg_PVEUMax 2 ro none
123 oil_06_level hrtankbattery default periodic FLOAT OT_6.Val 2 ro none
124 oil_06_hihi_alm hrtankbattery default periodic BIT OT_6.Alm_HiHi ro none 0
125 oil_06_hi_alm hrtankbattery default periodic BIT OT_6.Alm_Hi ro none 0
126 oil_06_tx_alm hrtankbattery default periodic BIT OT_6.Alm_Fail ro none 0
127 oil_06_hihi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiHiLim 2 ro none
128 oil_06_hi_spt hrtankbattery default periodic FLOAT OT_6.PSet_HiLim 2 ro none
129 oil_06_max_height hrtankbattery default periodic FLOAT OT_6.Cfg_PVEUMax 2 ro none
130 oil_07_level hrtankbattery default periodic FLOAT OT_7.Val 2 ro none
131 oil_07_hihi_alm hrtankbattery default periodic BIT OT_7.Alm_HiHi ro none 0
132 oil_07_hi_alm hrtankbattery default periodic BIT OT_7.Alm_Hi ro none 0
133 oil_07_tx_alm hrtankbattery default periodic BIT OT_7.Alm_Fail ro none 0
134 oil_07_hihi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiHiLim 2 ro none
135 oil_07_hi_spt hrtankbattery default periodic FLOAT OT_7.PSet_HiLim 2 ro none
136 oil_07_max_height hrtankbattery default periodic FLOAT OT_7.Cfg_PVEUMax 2 ro none
137 transfer_01_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Sts_Running ro none 0
138 transfer_01_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_01.Alm_FailToStart ro none 0
139 transfer_01_discharge hrtankbattery default periodic FLOAT XferPump_01_Dis_PSI.Val 2 ro none
140 transfer_01_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_HiHi ro none 0
141 transfer_01_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_01_Dis_PSI.Alm_LoLo ro none 0
142 transfer_01_flow_rate hrtankbattery default periodic FLOAT XferPump_01_FlowRate.Val 2 ro none
143 transfer_01_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_HiHi ro none 0
144 transfer_01_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_01_FlowRate.Alm_LoLo ro none 0
145 transfer_01_3_phase_pwr_alm hrtankbattery default periodic BIT Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree ro none 0
146 transfer_02_sts hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Sts_Running ro none 0
147 transfer_02_alm hrtankbattery default periodic BIT XFER_PUMP_Motor_02.Alm_FailToStart ro none 0
148 transfer_02_discharge hrtankbattery default periodic FLOAT XferPump_02_Dis_PSI.Val 2 ro none
149 transfer_02_discharge_hihi_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_HiHi ro none 0
150 transfer_02_discharge_lolo_alm hrtankbattery default periodic BIT XferPump_02_Dis_PSI.Alm_LoLo ro none 0
151 transfer_02_flow_rate hrtankbattery default periodic FLOAT XferPump_02_FlowRate.Val 2 ro none
152 transfer_02_flow_rate_hihi_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_HiHi ro none 0
153 transfer_02_flow_rate_lolo_alm hrtankbattery default periodic BIT XferPump_02_FlowRate.Alm_LoLo ro none 0
154 lact_01_permissive hrtankbattery default periodic BIT LACT_01_Permissive ro none 0
155 lact_01_sts hrtankbattery default periodic BIT LACT_01_Run_Status ro none 0
156 lact_01_alm hrtankbattery default periodic BIT LACT_01_Failure ro none 0
157 lact_01_oil_shutdown hrtankbattery default periodic BIT LACT_01_Bad_Oil_Shutdown ro none 0
158 lact_01_flow_rate hrtankbattery default periodic FLOAT Lact_01_Realtime_Flow_Rate 2 ro none
159 lact_01_bs_w hrtankbattery default periodic FLOAT Lact_01_BS_and_W_Reading 2 ro none
160 lact_01_daily_volume hrtankbattery default periodic FLOAT Lact_01_Current_Daily_Ind_Volume_Total 2 ro none
161 lact_01_prev_day hrtankbattery default periodic FLOAT Lact_01_History.Previous_Day_1 2 ro none
162 lact_02_permissive hrtankbattery default periodic BIT LACT_02_Permissive ro none 0
163 lact_02_sts hrtankbattery default periodic BIT LACT_02_Run_Status ro none 0
164 lact_02_alm hrtankbattery default periodic BIT LACT_02_Failure ro none 0
165 lact_02_oil_shutdown hrtankbattery default periodic BIT LACT_02_Bad_Oil_Shutdown ro none 0
166 lact_02_flow_rate hrtankbattery default periodic FLOAT Lact_02_Realtime_Flow_Rate 2 ro none
167 lact_02_bs_w hrtankbattery default periodic FLOAT Lact_02_BS_and_W_Reading 2 ro none
168 lact_02_daily_volume hrtankbattery default periodic FLOAT Lact_02_Current_Daily_Ind_Volume_Total 2 ro none
169 lact_02_prev_day hrtankbattery default periodic FLOAT Lact_02_History.Previous_Day_1 2 ro none
170 containment_high_alm hrtankbattery default periodic BIT Contain_Hi_Level.Alm_TgtDisagree ro none 0
171 h2s_alm hrtankbattery default periodic BIT H2s_Alarm.Alm_TgtDisagree ro none 0
172 tf_sales_battery_voltage hrtankbattery default periodic FLOAT Val_Sales_TF_Battery_Voltage 2 ro none
173 tf_sales_charger_voltage hrtankbattery default periodic FLOAT Val_Sales_TF_Charger_Voltage 2 ro none
174 tf_sales_differential_pressure hrtankbattery default periodic FLOAT Val_Sales_TF_Differential_Pressure 2 ro none
175 tf_sales_flow_rate hrtankbattery default periodic FLOAT Val_Sales_TF_Flow_Rate 2 ro none
176 tf_sales_lifetime hrtankbattery default periodic FLOAT Val_Sales_TF_Lifetime 2 ro none
177 tf_sales_static_pressure hrtankbattery default periodic FLOAT Val_Sales_TF_Static_Pressure 2 ro none
178 tf_sales_temperature hrtankbattery default periodic FLOAT Val_Sales_TF_Temperature 2 ro none
179 tf_sales_yesterday_total hrtankbattery default periodic FLOAT Val_Sales_TF_Yesterday_Total 2 ro none
180 tf_v1_battery_voltage hrtankbattery default periodic FLOAT Val_V1_TF_Battery_Voltage 2 ro none
181 tf_v1_charger_voltage hrtankbattery default periodic FLOAT Val_V1_TF_Charger_Voltage 2 ro none
182 tf_v1_differential_pressure hrtankbattery default periodic FLOAT Val_V1_TF_Differential_Pressure 2 ro none
183 tf_v1_flow_rate hrtankbattery default periodic FLOAT Val_V1_TF_Flow_Rate 2 ro none
184 tf_v1_lifetime hrtankbattery default periodic FLOAT Val_V1_TF_Lifetime 2 ro none
185 tf_v1_static_pressure hrtankbattery default periodic FLOAT Val_V1_TF_Static_Pressure 2 ro none
186 tf_v1_temperature hrtankbattery default periodic FLOAT Val_V1_TF_Temperature 2 ro none
187 tf_v1_yesterday_total hrtankbattery default periodic FLOAT Val_V1_TF_Yesterday_Total 2 ro none
188 tf_v2_battery_voltage hrtankbattery default periodic FLOAT Val_V2_TF_Battery_Voltage 2 ro none
189 tf_v2_charger_voltage hrtankbattery default periodic FLOAT Val_V2_TF_Charger_Voltage 2 ro none
190 tf_v2_differential_pressure hrtankbattery default periodic FLOAT Val_V2_TF_Differential_Pressure 2 ro none
191 tf_v2_flow_rate hrtankbattery default periodic FLOAT Val_V2_TF_Flow_Rate 2 ro none
192 tf_v2_lifetime hrtankbattery default periodic FLOAT Val_V2_TF_Lifetime 2 ro none
193 tf_v2_static_pressure hrtankbattery default periodic FLOAT Val_V2_TF_Static_Pressure 2 ro none
194 tf_v2_temperature hrtankbattery default periodic FLOAT Val_V2_TF_Temperature 2 ro none
195 tf_v2_yesterday_total hrtankbattery default periodic FLOAT Val_V2_TF_Yesterday_Total 2 ro none
196 tf_v3_battery_voltage hrtankbattery default periodic FLOAT Val_V3_TF_Battery_Voltage 2 ro none
197 tf_v3_charger_voltage hrtankbattery default periodic FLOAT Val_V3_TF_Charger_Voltage 2 ro none
198 tf_v3_differential_pressure hrtankbattery default periodic FLOAT Val_V3_TF_Differential_Pressure 2 ro none
199 tf_v3_flow_rate hrtankbattery default periodic FLOAT Val_V3_TF_Flow_Rate 2 ro none
200 tf_v3_lifetime hrtankbattery default periodic FLOAT Val_V3_TF_Lifetime 2 ro none
201 tf_v3_static_pressure hrtankbattery default periodic FLOAT Val_V3_TF_Static_Pressure 2 ro none
202 tf_v3_temperature hrtankbattery default periodic FLOAT Val_V3_TF_Temperature 2 ro none
203 tf_v3_yesterday_total hrtankbattery default periodic FLOAT Val_V3_TF_Yesterday_Total 2 ro none
204 tf_v4_battery_voltage hrtankbattery default periodic FLOAT Val_V4_TF_Battery_Voltage 2 ro none
205 tf_v4_charger_voltage hrtankbattery default periodic FLOAT Val_V4_TF_Charger_Voltage 2 ro none
206 tf_v4_differential_pressure hrtankbattery default periodic FLOAT Val_V4_TF_Differential_Pressure 2 ro none
207 tf_v4_flow_rate hrtankbattery default periodic FLOAT Val_V4_TF_Flow_Rate 2 ro none
208 tf_v4_lifetime hrtankbattery default periodic FLOAT Val_V4_TF_Lifetime 2 ro none
209 tf_v4_static_pressure hrtankbattery default periodic FLOAT Val_V4_TF_Static_Pressure 2 ro none
210 tf_v4_temperature hrtankbattery default periodic FLOAT Val_V4_TF_Temperature 2 ro none
211 tf_v4_yesterday_total hrtankbattery default periodic FLOAT Val_V4_TF_Yesterday_Total 2 ro none
212 tf_v5_battery_voltage hrtankbattery default periodic FLOAT Val_V5_TF_Battery_Voltage 2 ro none
213 tf_v5_charger_voltage hrtankbattery default periodic FLOAT Val_V5_TF_Charger_Voltage 2 ro none
214 tf_v5_differential_pressure hrtankbattery default periodic FLOAT Val_V5_TF_Differential_Pressure 2 ro none
215 tf_v5_flow_rate hrtankbattery default periodic FLOAT Val_V5_TF_Flow_Rate 2 ro none
216 tf_v5_lifetime hrtankbattery default periodic FLOAT Val_V5_TF_Lifetime 2 ro none
217 tf_v5_static_pressure hrtankbattery default periodic FLOAT Val_V5_TF_Static_Pressure 2 ro none
218 tf_v5_temperature hrtankbattery default periodic FLOAT Val_V5_TF_Temperature 2 ro none
219 tf_v5_yesterday_total hrtankbattery default periodic FLOAT Val_V5_TF_Yesterday_Total 2 ro none
220 vessel_1_gas_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Gas_FR 2 ro none
221 vessel_1_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_FR 2 ro none
222 vessel_1_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_1_OIL_LastMonth_Accum 2 ro none
223 vessel_1_oil_month hrtankbattery default periodic FLOAT Val_Vessel_1_OIL_Month_Accum 2 ro none
224 vessel_1_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_T1 2 ro none
225 vessel_1_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Temp 2 ro none
226 vessel_1_oil_today hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Todays_Accum 2 ro none
227 vessel_1_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_1_Oil_Yest_Accum 2 ro none
228 vessel_1_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_1_Water_FR 2 ro none
229 vessel_1_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_1_Water_LastMonth_Accum 2 ro none
230 vessel_1_water_month hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Month_Accum 2 ro none
231 vessel_1_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_1_Water_T1 2 ro none
232 vessel_1_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Temp 2 ro none
233 vessel_1_water_today hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Todays_Accum 2 ro none
234 vessel_1_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_1_Water_Yest_Accum 2 ro none
235 vessel_2_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_FR 2 ro none
236 vessel_2_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_LastMonth_Accum 2 ro none
237 vessel_2_oil_month hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_Month_Accum 2 ro none
238 vessel_2_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_T1 2 ro none
239 vessel_2_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_Temp 2 ro none
240 vessel_2_oil_today hrtankbattery default periodic FLOAT Val_Vessel_2_Oil_Todays_Accum 2 ro none
241 vessel_2_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_2_OIL_Yest_Accum 2 ro none
242 vessel_2_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_2_Water_FR 2 ro none
243 vessel_2_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_2_Water_LastMonth_Accum 2 ro none
244 vessel_2_water_month hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Month_Accum 2 ro none
245 vessel_2_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_2_Water_T1 2 ro none
246 vessel_2_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Temp 2 ro none
247 vessel_2_water_today hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Todays_Accum 2 ro none
248 vessel_2_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_2_Water_Yest_Accum 2 ro none
249 vessel_3_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_FR 2 ro none
250 vessel_3_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_LastMonth_Accum 2 ro none
251 vessel_3_oil_month hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_Month_Accum 2 ro none
252 vessel_3_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_T1 2 ro none
253 vessel_3_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_Temp 2 ro none
254 vessel_3_oil_today hrtankbattery default periodic FLOAT Val_Vessel_3_Oil_Todays_Accum 2 ro none
255 vessel_3_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_3_OIL_Yest_Accum 2 ro none
256 vessel_3_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_3_Water_FR 2 ro none
257 vessel_3_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_3_Water_LastMonth_Accum 2 ro none
258 vessel_3_water_month hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Month_Accum 2 ro none
259 vessel_3_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_3_Water_T1 2 ro none
260 vessel_3_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Temp 2 ro none
261 vessel_3_water_today hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Todays_Accum 2 ro none
262 vessel_3_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_3_Water_Yest_Accum 2 ro none
263 vessel_4_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_FR 2 ro none
264 vessel_4_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_LastMonth_Accum 2 ro none
265 vessel_4_oil_month hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_Month_Accum 2 ro none
266 vessel_4_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_T1 2 ro none
267 vessel_4_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_Temp 2 ro none
268 vessel_4_oil_today hrtankbattery default periodic FLOAT Val_Vessel_4_Oil_Todays_Accum 2 ro none
269 vessel_4_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_4_OIL_Yest_Accum 2 ro none
270 vessel_4_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_4_Water_FR 2 ro none
271 vessel_4_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_4_Water_LastMonth_Accum 2 ro none
272 vessel_4_water_month hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Month_Accum 2 ro none
273 vessel_4_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_4_Water_T1 2 ro none
274 vessel_4_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Temp 2 ro none
275 vessel_4_water_today hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Todays_Accum 2 ro none
276 vessel_4_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_4_Water_Vest_Accum 2 ro none
277 vessel_5_oil_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_FR 2 ro none
278 vessel_5_oil_last_month hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_LastMonth_Accum 2 ro none
279 vessel_5_oil_month hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_Month_Accum 2 ro none
280 vessel_5_oil_lifetime hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_T1 2 ro none
281 vessel_5_oil_temperature hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_Temp 2 ro none
282 vessel_5_oil_today hrtankbattery default periodic FLOAT Val_Vessel_5_Oil_Todays_Accum 2 ro none
283 vessel_5_oil_yesterday hrtankbattery default periodic FLOAT Val_Vessel_5_OIL_Yest_Accum 2 ro none
284 vessel_5_water_flow_rate hrtankbattery default periodic FLOAT Val_Vessel_5_Water_FR 2 ro none
285 vessel_5_water_last_month hrtankbattery default periodic FLOAT Val_Vessel_5_Water_LastMonth_Accum 2 ro none
286 vessel_5_water_month hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Month_Accum 2 ro none
287 vessel_5_water_lifetime hrtankbattery default periodic FLOAT Val_Vessel_5_Water_T1 2 ro none
288 vessel_5_water_temperature hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Temp 2 ro none
289 vessel_5_water_today hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Todays_Accum 2 ro none
290 vessel_5_water_yesterday hrtankbattery default periodic FLOAT Val_Vessel_5_Water_Yest_Accum 2 ro none
291 wtp_1_flow_rate hrtankbattery default periodic FLOAT Val_WTP_FM_FR_MBS 2 ro none
292 wtp_1_last_month hrtankbattery default periodic FLOAT Val_WTP_FM_LastMonth_Accum 2 ro none
293 wtp_1_month hrtankbattery default periodic FLOAT Val_WTP_FM_Month_Accum 2 ro none
294 wtp_1_net_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T1_MBS 2 ro none
295 wtp_1_forward_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T2_MBS 2 ro none
296 wtp_1_reverse_volume hrtankbattery default periodic FLOAT Val_WTP_FM_T3_MBS 2 ro none
297 wtp_1_today hrtankbattery default periodic FLOAT Val_WTP_FM_Todays_Accum 2 ro none
298 wtp_1_yesterday hrtankbattery default periodic FLOAT Val_WTP_FM_Yest_Accum 2 ro none

View File

@@ -124,15 +124,22 @@ def sendData(message):
except Exception as e:
logger.error(e)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
run_tanks = {}
for measure in message["measures"]:
try:
logger.debug(measure)
if abs(payload["ts"]/1000 - measure["timestamp"]) > 3600:
reboot(reason="Poll timestamp and actual timestamp out of sync. Actual: {} Poll: {}".format(payload["ts"]/1000,measure["timestamp"]))
if measure["name"] in ["oil_run_tank","water_run_tank"]:
run_tanks[measure["name"]] = measure["value"]
if "_level" in measure["name"]:
run_tanks[measure["name"]] = measure["value"]
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
payload["values"]["oil_run_tank_level"] = run_tanks["oil_0" + str(run_tanks["oil_run_tank"]) + "_level"]
payload["values"]["water_run_tank_level"] = run_tanks["water_0" + str(run_tanks["water_run_tank"]) + "_level"]
publish(__topic__, json.dumps(payload), __qos__)
publish("v1/devices/me/attributes", json.dumps({"latestReportTime": (round(dt.timestamp(dt.now())/600)*600)*1000}), __qos__)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
# Enter your python code.
import json, time
from common.Logger import logger
from quickfaas.remotebus import publish
def sendAlarm(message):
logger.info(message)
payload = {}
payload["ts"] = time.time()*1000
payload["values"] = {message["measureName"]: message["value"]}
publish(__topic__, json.dumps(payload), __qos__)

View File

@@ -0,0 +1,145 @@
# Enter your python code.
import json, os
from datetime import datetime as dt
from common.Logger import logger
from quickfaas.remotebus import publish
from quickfaas.global_dict import get as get_params
from quickfaas.global_dict import _set_global_args
def reboot(reason="Rebooting for config file update"):
#basic = Basic()
logger.info("!" * 10 + "REBOOTING DEVICE" + "!"*10)
logger.info(reason)
r = os.popen("kill -s SIGHUP `cat /var/run/python/supervisord.pid`").read()
logger.info(f"REBOOT : {r}")
def checkFileExist(filename):
path = "/var/user/files"
if not os.path.exists(path):
logger.info("no folder making files folder in var/user")
os.makedirs(path)
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
if not os.path.exists(path + "/" + filename):
logger.info("no creds file making creds file")
with open(path + "/" + filename, "a") as f:
json.dump({}, f)
def convertDStoJSON(ds):
j = dict()
for x in ds:
j[x["key"]] = x["value"]
return j
def convertJSONtoDS(j):
d = []
for key in j.keys():
d.append({"key": key, "value": j[key]})
return d
def checkCredentialConfig():
logger.debug("CHECKING CONFIG")
cfgpath = "/var/user/cfg/device_supervisor/device_supervisor.cfg"
credspath = "/var/user/files/creds.json"
cfg = dict()
with open(cfgpath, "r") as f:
cfg = json.load(f)
clouds = cfg.get("clouds")
logger.debug(clouds)
#if not configured then try to configure from stored values
if clouds[0]["args"]["clientId"] == "unknown" or clouds[0]["args"]["username"] == "unknown" or not clouds[0]["args"]["passwd"] or clouds[0]["args"]["passwd"] == "unknown":
checkFileExist("creds.json")
with open(credspath, "r") as c:
creds = json.load(c)
if creds:
logger.debug("updating config with stored data")
clouds[0]["args"]["clientId"] = creds["clientId"]
clouds[0]["args"]["username"] = creds["userName"]
clouds[0]["args"]["passwd"] = creds["password"]
cfg["clouds"] = clouds
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
reboot()
else:
#assuming clouds is filled out, if data is different then assume someone typed in something new and store it, if creds is empty fill with clouds' data
checkFileExist("creds.json")
with open(credspath, "r") as c:
logger.debug("updating stored file with new data")
cfg = checkParameterConfig(cfg)
with open(cfgpath, "w", encoding='utf-8') as n:
json.dump(cfg, n, indent=1, ensure_ascii=False)
creds = json.load(c)
if creds:
if creds["clientId"] != clouds[0]["args"]["clientId"]:
creds["clientId"] = clouds[0]["args"]["clientId"]
if creds["userName"] != clouds[0]["args"]["username"]:
creds["userName"] = clouds[0]["args"]["username"]
if creds["password"] != clouds[0]["args"]["passwd"]:
creds["password"] = clouds[0]["args"]["passwd"]
else:
creds["clientId"] = clouds[0]["args"]["clientId"]
creds["userName"] = clouds[0]["args"]["username"]
creds["password"] = clouds[0]["args"]["passwd"]
with open(credspath, "w") as cw:
json.dump(creds,cw)
def checkParameterConfig(cfg):
logger.debug("Checking Parameters!!!!")
paramspath = "/var/user/files/params.json"
cfgparams = convertDStoJSON(cfg.get("labels"))
#check stored values
checkFileExist("params.json")
with open(paramspath, "r") as f:
logger.debug("Opened param storage file")
params = json.load(f)
if params:
if cfgparams != params:
#go through each param
#if not "unknown" and cfg and params aren't the same take from cfg likely updated manually
#if key in cfg but not in params copy to params
logger.debug("equalizing params between cfg and stored")
for key in cfgparams.keys():
try:
if cfgparams[key] != params[key] and cfgparams[key] != "unknown":
params[key] = cfgparams[key]
except:
params[key] = cfgparams[key]
cfg["labels"] = convertJSONtoDS(params)
_set_global_args(convertJSONtoDS(params))
with open(paramspath, "w") as p:
json.dump(params, p)
else:
with open(paramspath, "w") as p:
logger.debug("initializing param file with params in memory")
json.dump(convertDStoJSON(get_params()), p)
cfg["labels"] = get_params()
return cfg
def sendData(message):
#logger.debug(message)
try:
checkCredentialConfig()
except Exception as e:
logger.error(e)
payload = {"ts": (round(dt.timestamp(dt.now())/600)*600)*1000, "values": {}}
run_tanks = {}
for measure in message["measures"]:
try:
logger.debug(measure)
if abs(payload["ts"]/1000 - measure["timestamp"]) > 3600:
reboot(reason="Poll timestamp and actual timestamp out of sync. Actual: {} Poll: {}".format(payload["ts"]/1000,measure["timestamp"]))
if measure["name"] in ["oil_run_tank","water_run_tank"]:
run_tanks[measure["name"]] = measure["value"]
if "_level" in measure["name"]:
run_tanks[measure["name"]] = measure["value"]
payload["values"][measure["name"]] = measure["value"]
except Exception as e:
logger.error(e)
payload["values"]["oil_run_tank_level"] = run_tanks["oil_0" + str(run_tanks["oil_run_tank"]) + "_level"]
payload["values"]["water_run_tank_level"] = run_tanks["water_0" + str(run_tanks["water_run_tank"]) + "_level"]
publish(__topic__, json.dumps(payload), __qos__)
publish("v1/devices/me/attributes", json.dumps({"latestReportTime": (round(dt.timestamp(dt.now())/600)*600)*1000}), __qos__)

View File

@@ -0,0 +1,66 @@
import json, time
from quickfaas.measure import recall, write
from quickfaas.remotebus import publish
from common.Logger import logger
def sync():
#get new values and send
payload = {}
topic = "v1/devices/me/telemetry"
try:
data = recall()#json.loads(recall().decode("utf-8"))
except Exception as e:
logger.error(e)
logger.debug(data)
for controller in data:
for measure in controller["measures"]:
#publish measure
payload[measure["name"]] = measure["value"]
logger.debug("Sending on topic: {}".format(topic))
logger.debug("Sending value: {}".format(payload))
publish(topic, json.dumps(payload), 1)
def writeplctag(value):
#value in the form {"measurement": <measurement_name>, "value": <value to write>}
try:
#value = json.loads(value.replace("'",'"'))
logger.debug(value)
#payload format: [{"name": "advvfdipp", "measures": [{"name": "manualfrequencysetpoint", "value": 49}]}]
message = [{"name": "hrtankbattery", "measures":[{"name":value["measurement"], "value": value["value"]}]}]
resp = write(message)
logger.debug("RETURN FROM WRITE: {}".format(resp))
return True
except Exception as e:
logger.debug(e)
return False
def receiveCommand(topic, payload):
try:
logger.debug(topic)
logger.debug(json.loads(payload))
p = json.loads(payload)
command = p["method"]
commands = {
"sync": sync,
"writeplctag": writeplctag,
}
if command == "setPLCTag":
try:
result = commands["writeplctag"](p["params"])
logger.debug(result)
except Exception as e:
logger.error(e)
#logger.debug(command)
ack(topic.split("/")[-1])
time.sleep(5)
sync()
except Exception as e:
logger.debug(e)
def ack(msgid):
#logger.debug(msgid)
#logger.debug(mac)
#logger.debug(name)
#logger.debug(value)
publish("v1/devices/me/rpc/response/" + str(msgid), json.dumps({"msg": {"time": time.time()}, "metadata": "", "msgType": ""}), 1)

View File

@@ -0,0 +1,19 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit
scaled_flow_meter,plcfreshwater,default,periodic,FLOAT,Scaled_Flow_Meter,2,1,ro,,,none,,,,,,,,
scaled_pressure_transducer,plcfreshwater,default,periodic,FLOAT,Scaled_Pressure_Transducer,2,1,ro,,,none,,,,,,,,
raw_hand_input,plcfreshwater,default,periodic,BIT,Raw_Hand_Input,2,1,ro,,,none,,,,,,,,
raw_auto_input,plcfreshwater,default,periodic,BIT,Raw_Auto_Input,2,1,ro,,,none,,,,,,,,
raw_run_status,plcfreshwater,default,periodic,BIT,Raw_Run_Status,2,1,ro,,,none,,,,,,,,
raw_local_start,plcfreshwater,default,periodic,BIT,Raw_Local_Start,2,1,ro,,,none,,,,,,,,
lifetime_flow_meter_gal,plcfreshwater,default,periodic,FLOAT,Lifetime_Flow_Meter_Gal,2,1,ro,,,none,,,,,,,,
spt_flow_meter_unit,plcfreshwater,default,periodic,BIT,SPT_Flow_Meter_Unit,2,1,ro,,,none,,,,,,,,
raw_overload_status,plcfreshwater,default,periodic,BIT,Raw_Overload_Status,2,1,ro,,,none,,,,,,,,
CMD_Cloud_Control,plcfreshwater,default,periodic,BIT,CMD_Cloud_Control,2,1,ro,,,none,,,,,,,,
total_fm_yesterday_gal,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Yesterday_Total_Gal,2,1,ro,,,none,,,,,,,,
total_fm_day_gal,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Current_Day_Total_Gal,2,1,ro,,,none,,,,,,,,
total_fm_last_month_gal,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Last_Month_Gal,2,1,ro,,,none,,,,,,,,
total_fm_month_gal,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Current_Month_Gal,2,1,ro,,,none,,,,,,,,
total_fm_yesterday_bbls,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Yesterday_Total_BBLs,2,1,ro,,,none,,,,,,,,
total_fm_day_bbls,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Current_Day_Total_BBLs,2,1,ro,,,none,,,,,,,,
total_fm_last_month_bbls,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Last_Month_BBLs,2,1,ro,,,none,,,,,,,,
total_fm_month_bbls,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Current_Month_BBLs,2,1,ro,,,none,,,,,,,,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit
2 scaled_flow_meter plcfreshwater default periodic FLOAT Scaled_Flow_Meter 2 1 ro none
3 scaled_pressure_transducer plcfreshwater default periodic FLOAT Scaled_Pressure_Transducer 2 1 ro none
4 raw_hand_input plcfreshwater default periodic BIT Raw_Hand_Input 2 1 ro none
5 raw_auto_input plcfreshwater default periodic BIT Raw_Auto_Input 2 1 ro none
6 raw_run_status plcfreshwater default periodic BIT Raw_Run_Status 2 1 ro none
7 raw_local_start plcfreshwater default periodic BIT Raw_Local_Start 2 1 ro none
8 lifetime_flow_meter_gal plcfreshwater default periodic FLOAT Lifetime_Flow_Meter_Gal 2 1 ro none
9 spt_flow_meter_unit plcfreshwater default periodic BIT SPT_Flow_Meter_Unit 2 1 ro none
10 raw_overload_status plcfreshwater default periodic BIT Raw_Overload_Status 2 1 ro none
11 CMD_Cloud_Control plcfreshwater default periodic BIT CMD_Cloud_Control 2 1 ro none
12 total_fm_yesterday_gal plcfreshwater default periodic FLOAT Totalizer_FM_Yesterday_Total_Gal 2 1 ro none
13 total_fm_day_gal plcfreshwater default periodic FLOAT Totalizer_FM_Current_Day_Total_Gal 2 1 ro none
14 total_fm_last_month_gal plcfreshwater default periodic FLOAT Totalizer_FM_Last_Month_Gal 2 1 ro none
15 total_fm_month_gal plcfreshwater default periodic FLOAT Totalizer_FM_Current_Month_Gal 2 1 ro none
16 total_fm_yesterday_bbls plcfreshwater default periodic FLOAT Totalizer_FM_Yesterday_Total_BBLs 2 1 ro none
17 total_fm_day_bbls plcfreshwater default periodic FLOAT Totalizer_FM_Current_Day_Total_BBLs 2 1 ro none
18 total_fm_last_month_bbls plcfreshwater default periodic FLOAT Totalizer_FM_Last_Month_BBLs 2 1 ro none
19 total_fm_month_bbls plcfreshwater default periodic FLOAT Totalizer_FM_Current_Month_BBLs 2 1 ro none

View File

@@ -0,0 +1,6 @@
MeasuringPointName,ControllerName,GroupName,UploadType,DataType,Address,Decimal,Len,ReadWrite,Unit,Description,Transform Type,MaxValue,MinValue,MaxScale,MinScale,Gain,Offset,startBit,endBit
flowrate,plcfreshwater,default,periodic,FLOAT,Scaled_Flow_Meter,2,1,ro,,,none,,,,,,,,
tubingpressure,plcfreshwater,default,periodic,FLOAT,Scaled_Pressure_Transducer,2,1,ro,,,none,,,,,,,,
flowtotalyesterday,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Yesterday_Total_BBLs,2,1,ro,,,none,,,,,,,,
flowtotal,plcfreshwater,default,periodic,FLOAT,Totalizer_FM_Current_Day_Total_BBLs,2,1,ro,,,none,,,,,,,,
wellstatus,plcfreshwater,default,periodic,BIT,Raw_Run_Status,2,1,ro,,,none,,,,,,,,
1 MeasuringPointName ControllerName GroupName UploadType DataType Address Decimal Len ReadWrite Unit Description Transform Type MaxValue MinValue MaxScale MinScale Gain Offset startBit endBit
2 flowrate plcfreshwater default periodic FLOAT Scaled_Flow_Meter 2 1 ro none
3 tubingpressure plcfreshwater default periodic FLOAT Scaled_Pressure_Transducer 2 1 ro none
4 flowtotalyesterday plcfreshwater default periodic FLOAT Totalizer_FM_Yesterday_Total_BBLs 2 1 ro none
5 flowtotal plcfreshwater default periodic FLOAT Totalizer_FM_Current_Day_Total_BBLs 2 1 ro none
6 wellstatus plcfreshwater default periodic BIT Raw_Run_Status 2 1 ro none

View File

@@ -1,135 +1,122 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from pycomm3 import LogixDriver\n",
"import json"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"with LogixDriver('166.195.17.16') as plc:\n",
" plctags = plc.get_tag_list()"
"from pycomm3 import LogixDriver\n",
"import json, pprint"
]
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'tag_name': '_IO_EM_DO_00', 'dim': 0, 'alias': True, 'instance_id': 1, 'symbol_address': 1044, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_01', 'dim': 0, 'alias': True, 'instance_id': 2, 'symbol_address': 1045, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_02', 'dim': 0, 'alias': True, 'instance_id': 3, 'symbol_address': 1046, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_03', 'dim': 0, 'alias': True, 'instance_id': 4, 'symbol_address': 1047, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_04', 'dim': 0, 'alias': True, 'instance_id': 5, 'symbol_address': 1048, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_05', 'dim': 0, 'alias': True, 'instance_id': 6, 'symbol_address': 1049, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DO_06', 'dim': 0, 'alias': True, 'instance_id': 7, 'symbol_address': 1050, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_00', 'dim': 0, 'alias': True, 'instance_id': 8, 'symbol_address': 1051, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_01', 'dim': 0, 'alias': True, 'instance_id': 9, 'symbol_address': 1052, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_02', 'dim': 0, 'alias': True, 'instance_id': 10, 'symbol_address': 1053, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_03', 'dim': 0, 'alias': True, 'instance_id': 11, 'symbol_address': 1054, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_04', 'dim': 0, 'alias': True, 'instance_id': 12, 'symbol_address': 1055, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_05', 'dim': 0, 'alias': True, 'instance_id': 13, 'symbol_address': 1056, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_06', 'dim': 0, 'alias': True, 'instance_id': 14, 'symbol_address': 1057, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_07', 'dim': 0, 'alias': True, 'instance_id': 15, 'symbol_address': 1058, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_08', 'dim': 0, 'alias': True, 'instance_id': 16, 'symbol_address': 1059, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_09', 'dim': 0, 'alias': True, 'instance_id': 17, 'symbol_address': 1060, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_10', 'dim': 0, 'alias': True, 'instance_id': 18, 'symbol_address': 1061, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_DI_11', 'dim': 0, 'alias': True, 'instance_id': 19, 'symbol_address': 1062, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_AI_00', 'dim': 0, 'alias': True, 'instance_id': 20, 'symbol_address': 1064, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_AI_01', 'dim': 0, 'alias': True, 'instance_id': 21, 'symbol_address': 1066, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_AI_02', 'dim': 0, 'alias': True, 'instance_id': 22, 'symbol_address': 1068, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_AI_03', 'dim': 0, 'alias': True, 'instance_id': 23, 'symbol_address': 1070, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_EM_AO_00', 'dim': 0, 'alias': True, 'instance_id': 24, 'symbol_address': 1072, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_P1_AI_00', 'dim': 0, 'alias': True, 'instance_id': 25, 'symbol_address': 1074, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': '_IO_P1_AI_01', 'dim': 0, 'alias': True, 'instance_id': 26, 'symbol_address': 1076, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'UINT', 'data_type_name': 'UINT', 'type_class': UINT, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Set', 'dim': 0, 'alias': True, 'instance_id': 27, 'symbol_address': 1116, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Reset', 'dim': 0, 'alias': True, 'instance_id': 28, 'symbol_address': 1117, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Alarm', 'dim': 0, 'alias': True, 'instance_id': 29, 'symbol_address': 1118, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Hi_Set', 'dim': 0, 'alias': True, 'instance_id': 30, 'symbol_address': 1119, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Hi_Reset', 'dim': 0, 'alias': True, 'instance_id': 31, 'symbol_address': 1120, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Hi_Alarm', 'dim': 0, 'alias': True, 'instance_id': 32, 'symbol_address': 1121, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lo_Set', 'dim': 0, 'alias': True, 'instance_id': 33, 'symbol_address': 1122, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lo_Reset', 'dim': 0, 'alias': True, 'instance_id': 34, 'symbol_address': 1123, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lo_Alarm', 'dim': 0, 'alias': True, 'instance_id': 35, 'symbol_address': 1124, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lo_Set', 'dim': 0, 'alias': True, 'instance_id': 36, 'symbol_address': 1125, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lo_Reset', 'dim': 0, 'alias': True, 'instance_id': 37, 'symbol_address': 1126, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lo_Alarm', 'dim': 0, 'alias': True, 'instance_id': 38, 'symbol_address': 1127, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Alarm_Enable', 'dim': 0, 'alias': True, 'instance_id': 39, 'symbol_address': 1128, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Alarm_Enabled', 'dim': 0, 'alias': True, 'instance_id': 40, 'symbol_address': 1129, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Save', 'dim': 0, 'alias': True, 'instance_id': 41, 'symbol_address': 1130, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'BOOL', 'data_type_name': 'BOOL', 'type_class': BOOL, 'bit_position': 0, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lev', 'dim': 0, 'alias': True, 'instance_id': 42, 'symbol_address': 1136, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_ScaledMin', 'dim': 0, 'alias': True, 'instance_id': 43, 'symbol_address': 1140, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_ScaledMax', 'dim': 0, 'alias': True, 'instance_id': 44, 'symbol_address': 1144, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lev', 'dim': 0, 'alias': True, 'instance_id': 45, 'symbol_address': 1148, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_ScaledMin', 'dim': 0, 'alias': True, 'instance_id': 46, 'symbol_address': 1152, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_ScaledMax', 'dim': 0, 'alias': True, 'instance_id': 47, 'symbol_address': 1156, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 48, 'symbol_address': 1160, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Hi_Clr_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 49, 'symbol_address': 1164, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Hi_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 50, 'symbol_address': 1168, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Hi_Clr_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 51, 'symbol_address': 1172, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_CU_Ft', 'dim': 0, 'alias': True, 'instance_id': 52, 'symbol_address': 1176, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Dim_A', 'dim': 0, 'alias': True, 'instance_id': 53, 'symbol_address': 1180, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Dim_B', 'dim': 0, 'alias': True, 'instance_id': 54, 'symbol_address': 1184, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Dim_C', 'dim': 0, 'alias': True, 'instance_id': 55, 'symbol_address': 1188, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Dim_D', 'dim': 0, 'alias': True, 'instance_id': 56, 'symbol_address': 1192, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Cubic_Feet_To_Barrels', 'dim': 0, 'alias': True, 'instance_id': 57, 'symbol_address': 1196, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Total_Barrels', 'dim': 0, 'alias': True, 'instance_id': 58, 'symbol_address': 1200, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lo_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 59, 'symbol_address': 1204, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lev_Temp', 'dim': 0, 'alias': True, 'instance_id': 60, 'symbol_address': 1208, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Lo_Clr_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 61, 'symbol_address': 1212, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lo_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 62, 'symbol_address': 1216, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lo_Clr_Setpoint', 'dim': 0, 'alias': True, 'instance_id': 63, 'symbol_address': 1220, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_Tot_Bbls_Temp', 'dim': 0, 'alias': True, 'instance_id': 64, 'symbol_address': 1224, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Lev_Temp', 'dim': 0, 'alias': True, 'instance_id': 65, 'symbol_address': 1228, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Dim_C', 'dim': 0, 'alias': True, 'instance_id': 66, 'symbol_address': 1232, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Dim_D', 'dim': 0, 'alias': True, 'instance_id': 67, 'symbol_address': 1236, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_CU_Ft', 'dim': 0, 'alias': True, 'instance_id': 68, 'symbol_address': 1240, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Tot_Bbls_Temp', 'dim': 0, 'alias': True, 'instance_id': 69, 'symbol_address': 1244, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Cubic_Feet_To_Barrels', 'dim': 0, 'alias': True, 'instance_id': 70, 'symbol_address': 1248, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Dim_A', 'dim': 0, 'alias': True, 'instance_id': 71, 'symbol_address': 1252, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Dim_B', 'dim': 0, 'alias': True, 'instance_id': 72, 'symbol_address': 1256, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_Total_Barrels', 'dim': 0, 'alias': True, 'instance_id': 73, 'symbol_address': 1260, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_EU_Min', 'dim': 0, 'alias': True, 'instance_id': 74, 'symbol_address': 1264, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_1_EU_Max', 'dim': 0, 'alias': True, 'instance_id': 75, 'symbol_address': 1268, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_EU_Min', 'dim': 0, 'alias': True, 'instance_id': 76, 'symbol_address': 1272, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n",
"{'tag_name': 'Pond_2_EU_Max', 'dim': 0, 'alias': True, 'instance_id': 77, 'symbol_address': 1276, 'symbol_object_address': 1077544924, 'software_control': 0, 'external_access': 'Unknown', 'dimensions': [0, 0, 0], 'data_type': 'REAL', 'data_type_name': 'REAL', 'type_class': REAL, 'tag_type': 'atomic'}\n"
"{'vendor': 'Rockwell Automation/Allen-Bradley', 'product_type': 'Programmable Logic Controller', 'product_code': 180, 'revision': {'major': 12, 'minor': 11}, 'status': b'4\\x00', 'serial': 'd05b07d5', 'product_name': '2080-LC20-20QWB', 'keyswitch': 'UNKNOWN'}\n"
]
}
],
"source": [
"for x in plctags:\n",
" print(x)"
"with LogixDriver('107.84.238.170') as plc:\n",
" #info = plc.get_plc_info()\n",
" plctags = plc.get_tag_list()\n",
" #print(info)\n",
" print(json.dumps(plc.tags_json, indent=4))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print(plctags)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"ename": "TypeError",
"evalue": "Object of type _DataTypeMeta is not JSON serializable",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m/Users/nico/Documents/GitHub/HP_InHand_IG502/getPLCData.ipynb Cell 3\u001b[0m in \u001b[0;36m<cell line: 1>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> <a href='vscode-notebook-cell:/Users/nico/Documents/GitHub/HP_InHand_IG502/getPLCData.ipynb#X13sZmlsZQ%3D%3D?line=0'>1</a>\u001b[0m json\u001b[39m.\u001b[39;49mdumps(plctags, indent\u001b[39m=\u001b[39;49m\u001b[39m4\u001b[39;49m)\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/__init__.py:238\u001b[0m, in \u001b[0;36mdumps\u001b[0;34m(obj, skipkeys, ensure_ascii, check_circular, allow_nan, cls, indent, separators, default, sort_keys, **kw)\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mcls\u001b[39m \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 233\u001b[0m \u001b[39mcls\u001b[39m \u001b[39m=\u001b[39m JSONEncoder\n\u001b[1;32m 234\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mcls\u001b[39;49m(\n\u001b[1;32m 235\u001b[0m skipkeys\u001b[39m=\u001b[39;49mskipkeys, ensure_ascii\u001b[39m=\u001b[39;49mensure_ascii,\n\u001b[1;32m 236\u001b[0m check_circular\u001b[39m=\u001b[39;49mcheck_circular, allow_nan\u001b[39m=\u001b[39;49mallow_nan, indent\u001b[39m=\u001b[39;49mindent,\n\u001b[1;32m 237\u001b[0m separators\u001b[39m=\u001b[39;49mseparators, default\u001b[39m=\u001b[39;49mdefault, sort_keys\u001b[39m=\u001b[39;49msort_keys,\n\u001b[0;32m--> 238\u001b[0m \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkw)\u001b[39m.\u001b[39;49mencode(obj)\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:201\u001b[0m, in \u001b[0;36mJSONEncoder.encode\u001b[0;34m(self, o)\u001b[0m\n\u001b[1;32m 199\u001b[0m chunks \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39miterencode(o, _one_shot\u001b[39m=\u001b[39m\u001b[39mTrue\u001b[39;00m)\n\u001b[1;32m 200\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39misinstance\u001b[39m(chunks, (\u001b[39mlist\u001b[39m, \u001b[39mtuple\u001b[39m)):\n\u001b[0;32m--> 201\u001b[0m chunks \u001b[39m=\u001b[39m \u001b[39mlist\u001b[39;49m(chunks)\n\u001b[1;32m 202\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39m'\u001b[39m\u001b[39m'\u001b[39m\u001b[39m.\u001b[39mjoin(chunks)\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:429\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode\u001b[0;34m(o, _current_indent_level)\u001b[0m\n\u001b[1;32m 427\u001b[0m \u001b[39myield\u001b[39;00m _floatstr(o)\n\u001b[1;32m 428\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(o, (\u001b[39mlist\u001b[39m, \u001b[39mtuple\u001b[39m)):\n\u001b[0;32m--> 429\u001b[0m \u001b[39myield from\u001b[39;00m _iterencode_list(o, _current_indent_level)\n\u001b[1;32m 430\u001b[0m \u001b[39melif\u001b[39;00m \u001b[39misinstance\u001b[39m(o, \u001b[39mdict\u001b[39m):\n\u001b[1;32m 431\u001b[0m \u001b[39myield from\u001b[39;00m _iterencode_dict(o, _current_indent_level)\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:325\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode_list\u001b[0;34m(lst, _current_indent_level)\u001b[0m\n\u001b[1;32m 323\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 324\u001b[0m chunks \u001b[39m=\u001b[39m _iterencode(value, _current_indent_level)\n\u001b[0;32m--> 325\u001b[0m \u001b[39myield from\u001b[39;00m chunks\n\u001b[1;32m 326\u001b[0m \u001b[39mif\u001b[39;00m newline_indent \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 327\u001b[0m _current_indent_level \u001b[39m-\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:405\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode_dict\u001b[0;34m(dct, _current_indent_level)\u001b[0m\n\u001b[1;32m 403\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 404\u001b[0m chunks \u001b[39m=\u001b[39m _iterencode(value, _current_indent_level)\n\u001b[0;32m--> 405\u001b[0m \u001b[39myield from\u001b[39;00m chunks\n\u001b[1;32m 406\u001b[0m \u001b[39mif\u001b[39;00m newline_indent \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 407\u001b[0m _current_indent_level \u001b[39m-\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:405\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode_dict\u001b[0;34m(dct, _current_indent_level)\u001b[0m\n\u001b[1;32m 403\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 404\u001b[0m chunks \u001b[39m=\u001b[39m _iterencode(value, _current_indent_level)\n\u001b[0;32m--> 405\u001b[0m \u001b[39myield from\u001b[39;00m chunks\n\u001b[1;32m 406\u001b[0m \u001b[39mif\u001b[39;00m newline_indent \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 407\u001b[0m _current_indent_level \u001b[39m-\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n",
" \u001b[0;31m[... skipping similar frames: _make_iterencode.<locals>._iterencode_dict at line 405 (1 times)]\u001b[0m\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:405\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode_dict\u001b[0;34m(dct, _current_indent_level)\u001b[0m\n\u001b[1;32m 403\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 404\u001b[0m chunks \u001b[39m=\u001b[39m _iterencode(value, _current_indent_level)\n\u001b[0;32m--> 405\u001b[0m \u001b[39myield from\u001b[39;00m chunks\n\u001b[1;32m 406\u001b[0m \u001b[39mif\u001b[39;00m newline_indent \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 407\u001b[0m _current_indent_level \u001b[39m-\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:438\u001b[0m, in \u001b[0;36m_make_iterencode.<locals>._iterencode\u001b[0;34m(o, _current_indent_level)\u001b[0m\n\u001b[1;32m 436\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mValueError\u001b[39;00m(\u001b[39m\"\u001b[39m\u001b[39mCircular reference detected\u001b[39m\u001b[39m\"\u001b[39m)\n\u001b[1;32m 437\u001b[0m markers[markerid] \u001b[39m=\u001b[39m o\n\u001b[0;32m--> 438\u001b[0m o \u001b[39m=\u001b[39m _default(o)\n\u001b[1;32m 439\u001b[0m \u001b[39myield from\u001b[39;00m _iterencode(o, _current_indent_level)\n\u001b[1;32m 440\u001b[0m \u001b[39mif\u001b[39;00m markers \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n",
"File \u001b[0;32m~/miniforge3/envs/thingsboard/lib/python3.10/json/encoder.py:179\u001b[0m, in \u001b[0;36mJSONEncoder.default\u001b[0;34m(self, o)\u001b[0m\n\u001b[1;32m 160\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mdefault\u001b[39m(\u001b[39mself\u001b[39m, o):\n\u001b[1;32m 161\u001b[0m \u001b[39m\"\"\"Implement this method in a subclass such that it returns\u001b[39;00m\n\u001b[1;32m 162\u001b[0m \u001b[39m a serializable object for ``o``, or calls the base implementation\u001b[39;00m\n\u001b[1;32m 163\u001b[0m \u001b[39m (to raise a ``TypeError``).\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 177\u001b[0m \n\u001b[1;32m 178\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 179\u001b[0m \u001b[39mraise\u001b[39;00m \u001b[39mTypeError\u001b[39;00m(\u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mObject of type \u001b[39m\u001b[39m{\u001b[39;00mo\u001b[39m.\u001b[39m\u001b[39m__class__\u001b[39m\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m \u001b[39m\u001b[39m'\u001b[39m\n\u001b[1;32m 180\u001b[0m \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mis not JSON serializable\u001b[39m\u001b[39m'\u001b[39m)\n",
"\u001b[0;31mTypeError\u001b[0m: Object of type _DataTypeMeta is not JSON serializable"
]
}
],
"source": [
"json.dumps(plctags, indent=4)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree, False, BOOL, None\n"
"Lact_01_Monthly_Total, None, None, Tag doesn't exist - Lact_01_Monthly_Total\n",
"Lact_01_Prev_Month_Total, None, None, Tag doesn't exist - Lact_01_Prev_Month_Total\n",
"Lact_01_Today_Total, None, None, Tag doesn't exist - Lact_01_Today_Total\n",
"Lact_01_Yesterday_Total, None, None, Tag doesn't exist - Lact_01_Yesterday_Total\n",
"Lact_02_Monthly_Total, 0.0, REAL, None\n",
"Lact_02_Prev_Month_Total, 0.0, REAL, None\n",
"Lact_02_Today_Total, 684.0, REAL, None\n",
"Lact_02_Yesterday_Total, 1631.27197265625, REAL, None\n",
"XferPump_01_Daily_Totalizer.Total, 226.14686584472656, REAL, None\n",
"XferPump_01_Daily_Totalizer.OldTotal, 1106.1217041015625, REAL, None\n",
"XferPump_02_Monthly_Totalizer.Total, 6236.13525390625, REAL, None\n",
"XferPump_02_Monthly_Totalizer.OldTotal, 0.0, REAL, None\n",
"Val_Water_Xfer_Current_Day, 6898.751953125, REAL, None\n",
"Val_Water_Xfer_Prev_Day, 10086.0771484375, REAL, None\n"
]
}
],
"source": [
"with LogixDriver('166.195.17.26') as plc:\n",
" print(plc.read(\"Transfer_Pump_3_Phase_Power_Alarm.Alm_TgtDisagree\"))"
"readtags = [\n",
" \"Lact_01_Monthly_Total\",\n",
" \"Lact_01_Prev_Month_Total\",\n",
" \"Lact_01_Today_Total\",\n",
" \"Lact_01_Yesterday_Total\",\n",
" \"Lact_02_Monthly_Total\",\n",
" \"Lact_02_Prev_Month_Total\",\n",
" \"Lact_02_Today_Total\",\n",
" \"Lact_02_Yesterday_Total\",\n",
" \"XferPump_01_Daily_Totalizer.Total\",\n",
" \"XferPump_01_Daily_Totalizer.OldTotal\",\n",
" \"XferPump_02_Monthly_Totalizer.Total\",\n",
" \"XferPump_02_Monthly_Totalizer.OldTotal\",\n",
" \"Val_Water_Xfer_Current_Day\",\n",
" \"Val_Water_Xfer_Prev_Day\"\n",
"]\n",
"with LogixDriver('63.40.227.154') as plc:\n",
" print(*plc.read(*readtags), sep=\"\\n\")\n",
" "
]
},
{
@@ -438,7 +425,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.5 | packaged by conda-forge | (main, Jun 14 2022, 07:05:37) [Clang 13.0.1 ]"
"version": "3.10.5"
},
"orig_nbformat": 4,
"vscode": {